专利摘要:
具有非揮發記憶體(NVM)之非揮發儲存系統提供自我記錄及階層一致性,從而實現低延時之恢復及強制單元存取交握。經由一或多個映射條目來維持主機位址與該NVM中之位址之間的映射,從而實現寫入至該NVM之主機資料之定位。該NVM中所儲存之物件包括足以單獨在該物件自身內恢復該物件之資訊。將該NVM管理為一或多個資料串流、一映射串流及一檢查點串流。將主機資料寫入至該等資料串流,將映射條目寫入至該映射串流,且將映射條目及其他資料結構之檢查點寫入至該檢查點串流。該等串流中所嵌入之時間標記使得能夠在恢復期間判定該等串流之選定部分彼此不一致且將被捨棄。
公开号:TW201324150A
申请号:TW101137008
申请日:2012-10-05
公开日:2013-06-16
发明作者:Earl T Cohen;Timothy Lawrence Canepa
申请人:Lsi Corp;
IPC主号:G06F3-00
专利说明:
用於非揮發儲存之自我記錄及階層一致性
需要非揮發儲存技術及製造之進步以提供成本、獲利能力、效能、效率及使用效用的改良。
在隨附申請資料表、請求或傳送文件(若存在,則在適合時)中作出針對本申請案之優先權權利主張。在本申請案之類型所准許的範圍內,本申請案出於所有目的以引用方式併入有以下申請案,所有該等申請案在進行本發明時係與本申請案共同擁有:美國臨時申請案(檔案號碼為SF-10-06,且序列號為61/543,707),於2011年10月5日申請,第一發明人為Earl T.COHEN,且名為「用於非揮發儲存之自我記錄及階層一致性(SELF-JOURNALING AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORAGE)」。
除非明確鑑別為公開已知的或熟知的,否則本文中對技術及概念的提及(包括出於上下文、定義或比較目的)不應解釋為承認此等技術及概念係先前公開已知的或另外為先前技術之一部分。本文中所引用之所有參考(若存在)(包括專利、專利申請案及公開案)出於所有目的以全文引用的方式被併入,無論是否被具體地併入。
本發明可按眾多方式實施為(例如)程序、製品、裝置、系統、物質組成及諸如電腦可讀儲存媒體(例如,光學及/或磁性大容量儲存器件(諸如,磁碟)、具有非揮發儲存器(諸如,快閃儲存器)之積體電路中的媒體)之電腦可讀媒體,或經由光學或電子通信鏈路發送程式指令的電腦網路。[實施方式]提供對實現上文[發明所屬之技術領域]中所鑑別之成本、獲利能力、效能、效率及使用效用之改良的本發明之一或多個實施例的闡述。[實施方式]包括引言以促進對[實施方式]之剩餘部分之理解。引言包括根據本文中所描述之概念的系統、方法、製品及電腦可讀媒體中之一或多者的實例實施例。如在結論中更詳細地論述,本發明涵蓋所宣稱之申請專利範圍之範疇內的所有可能修改及變化。
下文提供本發明之一或多個實施例之詳細描述以及說明本發明之選定細節的隨附諸圖。結合實施例描述本發明。應將本文中之實施例理解為僅為例示性的,本發明明確不限於本文中之任何或所有實施例或明確不受本文中之任何或所有實施例的限制,且本發明涵蓋眾多替代、修改及等效物。為了避免闡述單調無趣,可將各種單字標註(諸如,第一、最後、某、各種、另外、其他、特定、選擇、一些及值得注意的)應用於實施例之獨立集合;如本文中所使用,此等標註明確不欲傳達量或任何形式之偏好或歧視,而是僅欲方便地在獨立集合之間進行區別。所揭示之程序之一些操作的次序在本發明之範疇內係可更改的。在多個實施例用以描述程序、方法及/或程式指令特徵之變化的任何情況下,涵蓋根據預定準則或動態地判定之準則來執行對複數個操作模式(分別對應於多個實施例中之複數個實施例)中之一者的靜態及/或動態選擇的其他實施例。在以下描述中陳述若干具體細節以提供對本發明之透徹理解。出於實例之目的而提供該等細節且可在無一些或所有該等細節的情況下根據申請專利範圍來實踐本發明。為了清楚起見,未詳細描述與本發明相關之技術領域中已知的技術材料以免不必要地模糊本發明。 引言
僅為了促進對實施方式之更快速理解而包括此引言;本發明並不限於引言(若存在,則包括明確實例)中所呈現之概念,因為任何引言之段落必定為完整主題之縮影且並不意謂為詳盡的或限制性的描述。舉例而言,隨後的引言對僅僅某些實施例提供受空間及組織限制之概述資訊。存在遍及說明書之其餘部分所論述之許多其他實施例,包括申請專利範圍最終所針對之實施例。 縮寫字
此處定義之各種速記縮寫(例如,縮略字)中之至少一些指代本文中所使用之某些元件。

在諸如使用快閃記憶體實施為NVM之一些SSD的一些非揮發儲存系統中之第一挑戰為如何有效地且可靠地提供非揮發儲存系統之NVM中所儲存之資料的資料完整性。第一挑戰之實例為在寫入已自主機(例如,計算主機或介接主機)發送至SSD時與相關於該寫入之所有效應已保存於非揮發儲存系統之NVM(例如,快閃記憶體)中時之間以一致方式維持與控制非揮發儲存系統相關之資料結構(例如,包括於SSD之控制器中)。舉例而言,在寫入與保存之間發生之失靈(例如,損壞、電源故障,或SSD或其中之電路的各種類型之故障)表示啟用非揮發儲存系統以進行處理(例如,經由一或多種恢復技術)來確保資料完整性之事件。
第一挑戰之另一實例為高可用性應用程式之寫入(例如,設定了FUA位元之SATA寫入)的有效處理,其中高可用性寫入(在本文別處有時稱為「FUA」寫入)由主機請求以僅在無錯誤地完成後由儲存系統確認為完成。若最小化高可用性寫入之延時,則產生較高效能。應注意,在一些實施例及/或使用情形中,除FUA寫入之外的所有寫入(在本文別處有時稱為「非FUA」寫入)確認為完成,即使非FUA之一些資料在失靈之情況下不能保證保存於NVM中。實施例預期支援高可用性寫入及各種協定(諸如,SAS、SATA、光纖通道(Fibre Channel)、PCIe及實現主機與儲存系統之間的儲存通信的任何協定)之其他類型之寫入。
一些NVM技術(諸如,一些類型之「反及」快閃記憶體)中之第二挑戰為如何經由快閃記憶體中之資料之位置的可靠動態映射而可靠地獲得對於一些非揮發儲存系統(例如,一些SSD實施方案)而言足夠之效能。因為快閃記憶體僅在抹除後可寫入,所以執行動態映射。舉例而言,當SSD自主機接收特定LBA之寫入時,新頁面(或,在一些實施例中,諸如一或多個讀取單元之一或多個頁面之一或多個部分)經分配以用於儲存該寫入之寫入資料。讀取資料之實例為與獨立較低階ECC處理相容之快閃記憶體之最小部分(例如,單個讀取單元足以使用較低階ECC來校正單個讀取單元內之錯誤)。將特定LBA與新頁面(或諸如一或多個讀取單元之一或多個頁面之部分)相關聯之映射經更新以使得自主機至特定LBA之未來讀取操作傳回寫入資料。
在一些實施例中,動態映射係經由單階映射進行。舉例而言,動態映射包括將LBA應用於單個表且獲得儲存對應於該LBA之資料的NVM中之位置。在一些實施例中,映射係經由雙階映射進行。舉例而言,動態映射概念上包括將LBA應用於第一表(例如,FLM)、獲得指向第二表之一部分(例如,SLM之一部分)的指標,且接著將該LBA應用於該部分,且獲得儲存對應於該LBA之資料的NVM中之位置。
第二挑戰之實例為甚至在失靈(例如,在針對一寫入之資料之寫入與映射之更新之間發生)之情況下仍維持及管理映射。舉例而言,若在失靈之前寫入資料保存於快閃記憶體中但映射(例如,針對映射的對應於所保存之寫入資料的一或多個更新)未保存於快閃記憶體中,則在至少一些情況下執行使得能夠自快閃記憶體恢復所保存之寫入資料中之至少一部分的技術(諸如,在電源之重設及/或重新施加後)。在一些實施例及/或使用情形中,寫入資料一非揮發地保存,FUA寫入便得以確認,而無關於任何對應映射更新是否亦非揮發地保存,從而在一些情況下,實現了改良之效能。另舉例而言,若映射(或針對映射的一或多個更新)保存至快閃記憶體,但對應寫入資料之至少一部分未保存至快閃記憶體(例如,歸因於失靈),則可執行辨識出映射(或其一或多個更新)與已保存至快閃記憶體之資料不一致之技術(諸如,在電源之重設及/或重新施加後)。例如,判定映射之一部分指向自抹除起尚未寫入或尚未寫入有對應寫入資料之快閃記憶體之一部分。再舉例而言,若在相關聯之寫入資料及對應映射資訊(或其任何更新)已保存於快閃記憶體中後,FUA寫入得以確認,則在一些實施例及/或使用情形中,相對大的效能懲罰產生。相對大的效能懲罰歸因於以下原因中之一或多者產生:一些協定(例如,SATA)之有限佇列、將寫入資料及映射資訊寫入至快閃記憶體之程式化時間,及彙總寫入資料以減小寫入放大之能力之降低。
在一些實施例及/或使用情形中,前述挑戰中之一或多者藉由如應用於非揮發儲存器(諸如,用於SSD中)或如SSD控制器或NVM(例如,快閃記憶體)控制器所管理之自我記錄及/或階層一致性來解決。舉例而言,自我記錄及階層一致性之組合使得能夠在存在失靈時全部或部分地重建映射資訊。在一些情況下,使用自我記錄及階層一致性技術來重建映射資訊比在無該等技術之情況下進行重建有效。另舉例而言,自我記錄及階層一致性之組合實現相對低延時之FUA交握。
在一些實施例及/或使用情形中,自我記錄及/或階層一致性概念上與對NVM進行管理之單元(例如,R區塊,本文別處描述)、如何寫入NVM管理單元(例如,帶)及如何管理該等管理單元之寫入(例如,作為串流)相關。R區塊之實例為NVM區塊(例如,來自SSD中之每一NVM晶粒之一個區塊,其中,區塊內之NVM位置係以等量化方式寫入)之集合。帶之實例為被按照串列方式寫入資訊(例如,以具體時間次序)之R區塊之集合,且視情況填充以具有類似屬性及/或特性之資訊。串流之實例為一帶,該帶經管理以使得在該帶內,資訊以與資訊經呈現以寫入至NVM中之次序相同的次序寫入至NVM(例如,較早時間呈現之資訊在較晚時間呈現之資訊之前寫入)。概念上,寫入至管理為串流之帶之資訊以類FIFO方式串流傳輸至NVM中,以時間次序組織。因為在某些事件(諸如,電源故障)之狀況下,寫入至特定NVM晶粒之成功不可預測,所以在串流之末端寫入之資料在一些情況下具有「孔」。舉例而言,串流中之最後寫入之晶粒(在電源故障之前)成功寫入,但串流中具有資料之較早部分的先前晶粒未成功寫入,從而在先前晶粒之位置中產生孔(例如,無效、無法校正及/或遺漏之資料)。
一些實施例以複數個串流進行操作。例如,該等串流包括用於主機資料(例如,與來自主機之寫入命令相關聯之寫入資料)及回收資料(例如,自NVM之一個部分移動至另一部分以使NVM之較大連續部分可用之資料)之一或多個資料串流。例如,該等串流包括用於映射資訊(諸如,用於判定特定主機寫入資料已儲存於NVM中何處)之一或多個映射串流。例如,該等串流包括儲存用於管理NVM資料儲存之資料結構(諸如,映射資訊及使用統計資料)之整個或部分映像之一或多個檢查點串流。
自我記錄使得能夠僅使用特定物件中可用之資訊來恢復與特定物件一致之資訊。舉例而言,主機資料與識別主機資料所對應之LBA之資訊一起儲存於NVM中。另舉例而言,回收資料與識別回收資料所對應之LBA之資訊一起儲存於NVM中。在一些實施例及/或使用情形中,自我記錄與知曉寫入所有資料之次序組合而實現映射資訊及其他資料結構的緩慢但完整之恢復。舉例而言,讀取SSD之所有(自我記錄)資料實現將LBA與NVM中之實體位置相關聯之映射的重建。
階層一致性使得能夠判定一資料結構之哪一版本由另一資料結構之哪一版本控管,該等版本係因例如獨立寫入及/或標註檢查點之資訊所致。舉例而言,資料串流優先於映射串流,而映射串流轉而優先於檢查點串流。失靈導致來自串流之資訊彼此無序地儲存於NVM中。與該資訊一起儲存於串流中之時間標記(例如,出現時間標頭及/或時間戳記)使得能夠判定NVM中所儲存之串流資訊之相對排序。在一些實施例及/或使用情形中,自我記錄與階層一致性組合而實現映射資訊及其他資料結構的完整且迅速之恢復。舉例而言,藉由以下方式而使將LBA與NVM中之實體位置相關聯之映射之恢復迅速:自映射串流讀取該映射之版本,且以單獨自優先於該映射之該版本的資料串流之部分獲得的更新來更新該映射。
在一些實施例中,階層一致性實現滾動檢查點之使用。諸如映射之資料結構之滾動檢查點在獨立各別時間保存資料結構之部分之狀態,以使得整個資料結構在資料結構之大於1之數目個滾動檢查點已保存之後得以保存。因為操作在滾動檢查點之保存之間繼續,所以滾動檢查點中之每一者為資料結構之各別部分在由滾動檢查點保存資料結構之各別部分的各別時間時的快照。然而,未必存在已保存之整個資料結構的單個時間一致之複本。在一些實施例及/或使用情形中,階層一致性與時間戳記組合而使得能夠自階層優先於含有資料結構之串流的其他串流中之滾動檢查點及資訊恢復整個資料結構之單個時間一致之複本。在其他實施例及/或使用情形中,使用滾動檢查點使得能夠(諸如)藉由影響延時、藉由最小化因標註檢查點而引起的正常處理之中斷及/或延遲之持續時間而使標註檢查點對系統行為較不具有破壞性。
在包括自我記錄及階層一致性之上下文中之恢復技術包括將(滾動)檢查點儲存至NVM,且回應於失靈,而處理所儲存之(滾動)檢查點以重建追蹤LBA與NVM位置對應性的映射資訊。
在各種實施例中,NVM中所儲存之資料串流之資料頁面(具有(例如)主機寫入資料及回收資料)、映射串流之映射頁面(具有(例如)SLM條目或其更新)及檢查點串流之檢查點頁面(具有(例如)FLM條目或其更新)中的一或多者自我記錄。例如,頁面(若存在)含有確保個別資料結構之連貫性所需之資訊。但此不暗示資料結構之間的一致性,其需要時間之觀念(諸如,由時間標記供應)。資料帶(包括(例如)資料頁面)及映射帶(例如包括映射條目及/或更新)作為串流來管理且以時間次序組織(至少在一串流內)。
在一些實施例及/或使用情形中,如NVM中所儲存之每一主機頁面(諸如LB)與含有該主機頁面之主機頁面位址(諸如LBA)之標頭相關聯。因此,若主機頁面已寫入至NVM,則相關聯之主機頁面位址(來自對應標頭)指示所寫入之主機頁面為哪一主機頁面。若對應於主機頁面之寫入之SLM條目未記載至NVM(例如,在失靈之前),則主機頁面自身含有足以用於重建構SLM條目之資訊(主機頁面位址)。在一些情形下,自資料之容器重建構資料之能力被稱為參考完整性。
在一些實施例中,階層一致性界定資料結構之排序,以使得在獨立寫入及/或標註檢查點之多個資料結構中,資料結構中之最高優先級者(或資料結構中之一者之最高優先級部分)為可識別的。舉例而言,當資料帶、映射帶及檢查點FIFO全部一致(例如,全部按照時間次序)時,資料帶優先於映射帶且映射帶優先於檢查點FIFO。
根據各種實施例,映射為以下各者中之一或多者:單階映射;雙階映射;多階映射;直接映射;相關聯映射;及將主機協定之LBA與NVM中之實體儲存位址相關聯之任何其他方式。舉例而言,在一些實施例中,雙階映射包括一階映射,其將LBA之第一函式與複數個二階映射頁面中之一者的NVM中之各別位址相關聯,且二階映射頁面中之每一者將LBA之第二函式與對應於LBA之資料的NVM中之各別位址相關聯。在其他實施例中,LBA之第一函式及LBA之第二函式之實例為除以二階映射頁面中之每一者中所包括的條目之固定數目而獲得的商及餘數。複數個二階映射頁面統稱為二階映射。本文中,對映射之一或多個條目之引用指任一類型之映射之一或多個條目,包括單階映射、雙階映射之第一階、雙階映射之第二階、多階映射之任一階或具有條目之任一其他類型之映射。
根據各種實施例,二階映射之映射頁面中之每一者(或多階映射之較低階)為以下情況中之一或多者:包括與映射頁面中之其他者相同之數目的條目;包括與映射頁面中之至少一些其他者不同之數目的條目;包括細微性與映射頁面中之其他者相同之條目;包括細微性與映射頁面中之其他者不同之條目;包括全部呈相同細微性之條目;包括呈多個細微性之條目;包括指定映射頁面之內容之格式及/或佈局之各別標頭;及具有表示映射頁面之條目的任何其他格式、佈局或組織。舉例而言,第一二階映射頁面的細微性規格為每條目4 KB,且第二二階映射頁面的細微性規格為每條目8 KB,且僅具有第一二階映射頁面一半的條目。
在其他實施例中,較高階映射之條目包括對應較低階映射頁面之格式及/或佈局資訊。舉例而言,一階映射中之條目中之每一者包括相關聯之二階映射頁面中之條目的細微性規格。
在一些實施例中,映射包括複數個條目,該等條目中之每一者將一或多個LBA與選擇性地包括儲存LBA之資料的NVM中之各別位置的資訊相關聯。舉例而言,LBA指定512 B磁區,且映射中之每一條目與LBA之對準之8磁區(4 KB)區域相關聯。
根據各種實施例,映射之條目之資訊包括以下各者中之一或多者:NVM中之位置;NVM中之讀取單元之位址;讀取以獲得NVM中所儲存的相關聯之LBA之資料的讀取單元之數目;NVM中所儲存的相關聯之LBA之資料的大小,該大小之細微性視情況及/或選擇性地大於一個位元組;相關聯之LBA之資料不存在於NVM中(諸如,歸因於相關聯之LBA之資料被修剪)之指示;相關聯之LBA之資料的屬性,包括應用於相關聯之LBA之資料的任何非標準修改程式;及相關聯之LBA之資料的任何其他後設資料、屬性或性質。
在一些實施例中,NVM中之位址分組為區域,以減少表示該等位址中之一者所需的位元之數目。舉例而言,若I/O器件之LBA劃分為64個區域,且NVM劃分為64個區域(LBA區域中之每一者一個),則與特定LBA相關聯之映射條目需要少了六個的位址位元,此係因為NVM中之區域中之一者能夠由特定LBA之區域來判定。根據各種實施例,LBA之區域與NVM之區域之間的關聯係藉由以下各者中之一或多者進行:相等性;直接關聯,諸如,1對1數值函式;表查找;動態映射;及用於將兩個數集相關聯之任何其他方法。
在各種實施例中,NVM中之位置包括複數個讀取單元中之一者之位址及以讀取單元為單位之長度及/或跨距。長度為NVM中所儲存之複數個資料項目中之特定資料項目的大小,該特定資料項目與包括該長度之映射之條目相關聯。根據各種實施例,長度之細微性為以下各者中之一或多者:一個位元組;一個以上位元組;一個讀取單元;讀取單元之指定分數;根據資料項目中之一者之最大允許壓縮率的細微性;及用以追蹤儲存使用之任何其他細微性。跨距為儲存特定資料項目之各別部分的讀取單元之數目,諸如,讀取單元之整數數目。在其他實施例及/或使用情形中,讀取單元之跨距中之第一讀取單元及/或讀取單元之跨距中之最後一讀取單元視情況及/或選擇性地儲存資料項目中之多個資料項目中的一些或全部。在一些實施例及/或使用情形中,(諸如)藉由將長度(在長度及/或跨距經編碼之上下文中,有時稱為大小)按照相對於跨距之位移來儲存而將長度及/或跨距按照經編碼之形式儲存。在一些實施例及/或使用情形中,長度及/或跨距之未使用之編碼對諸如非標準修改程式之指示或諸如相關聯之資料項目是否存在於NVM中之指示的額外資訊編碼。
將NVM中之位置編碼為位址及長度使NVM中所儲存之資料能夠變化大小。舉例而言,第一4 KB區域壓縮為400 B之大小,完全儲存於單個讀取單元中,且長度為一個讀取單元,而第二4 KB區域不可壓縮,橫跨一個以上讀取單元,且長度為一個以上讀取單元。在其他實施例中,具有與LBA之區域相關聯之儲存的以讀取單元為單位之長度及/或跨距使得能夠單獨讀取NVM之所需部分以擷取LBA之區域之資料。
在一些實施例中,映射之條目中之每一者包括指定與該條目相關聯之LBA之區域的屬性的資訊,有時稱為後設資料。在其他實施例中,(諸如)藉由針對該區域之複數個LBA中之每一者具有獨立後設資料規格,後設資料之至少一些的細微性比區域之細微性精細。根據各種實施例,後設資料包括適用於及/或用於修改及/或控制與該區域相關聯之NVM中的資料之寫入、存取、讀取及/或回收的一或多個非標準修改程式。 實例實施例
作為實施方式之引言的總結,以下為提供對根據本文中所描述之概念之各種實施例類型的額外描述的實例實施例之集合,其包括至少一些被明確列舉為「EC」(實例組合)之實例實施例;此等實例並不意欲為互斥性的、詳盡的或限制性的;且本發明並不限於此等實例實施例,而是涵蓋在所宣稱之申請專利範圍及其等效物之範疇內的所有可能之修改及變化。
EC1)一種方法,其包含:以一第一次序將一系列資料單元配置於一非揮發記憶體(NVM)中,該等資料單元中之每一者與複數個時間戳記中之一各別時間戳記相關聯;以一第二次序將一系列資料映射單元配置於該NVM中,該等資料映射單元中之每一者與該複數個時間戳記中之一各別時間戳記相關聯;其中該等資料映射單元中之每一者包含該等資料單元中之一對應資料單元的該NVM中之一位置;且其中與該等資料單元中之每一者相關聯之該各別時間戳記係在與該對應資料映射單元相關聯之該各別時間戳記時或之前。
EC2)如EC1之方法,其中:該等資料單元中之每一者對應於自一主機至一各別邏輯區塊位址(LBA)之一各別資料寫入;該等資料單元中之一先前資料單元及一後續資料單元對應於該等資料寫入中的至該等各別LBA中之一相同LBA的資料寫入;且該先前資料單元不具有該等資料映射單元中之一相關聯之資料映射單元。
EC3)如EC1之方法,其進一步包含,在一電源故障之後:判定該等資料單元中之一最晚有效且連續之資料單元;判定該等資料映射單元中之一最晚有效且連續之資料映射單元,其中與該等資料映射單元中之該最晚有效且連續之資料映射單元相關聯的該各別時間戳記係在與該等資料單元中之該最晚有效且連續之資料單元相關聯的該各別時間戳記時或之前;僅恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元;及藉此,在恢復中,與在與該等資料單元中之該最晚有效且連續之資料單元相關聯的該各別時間戳記之後的任何該等各別時間戳記相關聯的任何該等資料映射單元被忽略。
EC4)如EC1之方法,其中該等資料單元為資料儲存單元。
EC5)一種方法,其包含:將一系列資料儲存單元寫入於一非揮發記憶體(NVM)中,該等資料儲存單元中之每一者與複數個時間戳記中之一各別時間戳記相關聯;將一系列資料映射單元寫入於該NVM中,該等資料映射單元中之每一者與該等時間戳記中之一各別時間戳記相關聯;其中該等資料映射單元中之每一者包含該等資料儲存單元中之一對應資料儲存單元的該NVM中之一位置;且其中與該等資料儲存單元中之每一者相關聯之該各別時間戳記指示一相對時代,該相對年代相同於或早期於與該對應資料映射單元相關聯之該各別時間戳記所指示之一相對時代。
EC6)如EC5之方法,其中該等資料儲存單元之該寫入係根據一第一次序,且該等資料映射單元之該寫入係根據一第二次序。
EC7)如EC5之方法,其中該等資料儲存單元根據一第一次序配置於該NVM中,且該等資料映射單元根據一第二次序配置於該NVM中。
EC8)如EC1、EC6或EC7之方法,其中該第一次序不同於該第二次序。
EC9)如EC5之方法,其中:該等資料儲存單元中之一第一資料儲存單元對應於自一主機至一特定邏輯區塊位址(LBA)之一第一資料寫入;該等資料儲存單元中之一第二資料儲存單元對應於自該主機至該特定LBA之一第二資料寫入;該第一資料寫入以時間次序優先於該第二資料寫入;且該等資料映射單元中無一者對應於該第一資料儲存單元。
EC10)如EC6之方法,其進一步包含,在一事件之後:根據該第一次序判定該等資料儲存單元中之一最晚有效且連續之資料儲存單元;根據該第二次序判定該等資料映射單元中之一最晚有效且連續之資料映射單元,該等資料映射單元中之該最晚有效且連續之資料映射單元與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯,該相對時代相同於或早期於與該等資料儲存單元中之該最晚有效且連續之資料儲存單元相關聯之該各別時間戳記所指示之一相對時代;及根據該第一次序及該第二次序僅恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元。
EC11)如EC6之方法,其進一步包含:根據該第一次序判定該等資料儲存單元中之一第一資料儲存單元,該等資料儲存單元中之該第一資料儲存單元為該等資料儲存單元中之一最晚有效且連續之資料儲存單元;根據該第二次序判定該等資料映射單元中之一最晚有效且連續之資料映射單元,該等資料映射單元中之該最晚有效且連續之資料映射單元與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯,該相對時代相同於或早期於與該等資料儲存單元中之該最晚有效且連續之資料儲存單元相關聯之該各別時間戳記所指示之一相對時代;根據該第一次序判定該等資料儲存單元中之一第二資料儲存單元,該等資料儲存單元中之該第二資料儲存單元為與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯的該等資料儲存單元中之一最晚資料儲存單元,該相對時代相同於或早於先於與該等資料映射單元中之該最晚有效且連續之資料映射單元相關聯的該各別時間戳記所指示之該相對時代的一所判定之量;及使用該等資料單元中的單獨來自該等資料儲存單元中之該第二資料儲存單元至該等資料儲存單元中之該第一資料儲存單元的資料單元,根據該第一次序及該第二次序恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元。
EC12)如EC11之方法,其進一步包含:針對先前未寫入至該NVM之該等資料映射單元中的每一經修改之資料映射單元,識別與等於與該等資料儲存單元中之一特定資料儲存單元相關聯之該各別時間戳記的一最早期更新相關聯的該等時間戳記中之一各別時間戳記,該經修改之資料映射單元包含該特定資料儲存單元的該NVM中之該位置;及在寫入與大於晚於與該經修改之資料映射單元之該最早期更新相關聯的該各別時間戳記的該所判定之量的該等各別時間戳記中之一時間戳記相關聯的該等資料儲存單元中之一者時或之前,將先前未寫入至該NVM之該等經修改之資料映射單元中之每一者寫入至該NVM。
EC13)如EC10之方法,其進一步包含,關於該恢復,忽略具有指示一相對時代的一各別時間戳記的任何該等資料映射單元,該相對時代近期於該等資料儲存單元中之該最晚有效且連續之資料儲存單元的該各別時間戳記所指示之一相對時代。
EC14)如EC10之方法,其中該事件包含一失靈。
EC15)如EC14之方法,其中該失靈包含以下各者中之一或多者:一電源故障;一損壞;及一電路故障。
EC16)如EC4或EC5之方法,其中該等資料映射單元中之至少兩者包含一相同位置,該相同位置為該等資料單元中之至少兩個各別資料單元的相同位址。
EC17)如EC4或EC5之方法,其進一步包含儲存與該等資料儲存單元中之至少一些相關聯之該各別時間戳記與該資料儲存單元,且儲存與該等資料映射單元中之至少一些相關聯之該各別時間戳記與該資料映射單元。
EC18)如EC4或EC5之方法,其中該等資料儲存單元之該等各別時間戳記中的充分時間戳記與該等資料儲存單元一起儲存,以使得可藉由讀取該NVM來判定該等資料儲存單元中之每一者與該各別資料儲存單元的該各別時間戳記之間的該關聯。
EC19)如EC4或EC5之方法,其中該等資料儲存單元之該等各別時間戳記中之至少一些中的每一者與該相關聯之資料儲存單元儲存於該NVM中。
EC20)如EC4或EC5之方法,其中該等資料映射單元之該等各別時間戳記中的充分時間戳記與該等資料映射單元一起儲存,以使得可藉由讀取該NVM來判定該等資料映射單元中之每一者與該各別資料映射單元的該各別時間戳記之間的該關聯。
EC21)如EC4或EC5之方法,其中該等資料映射單元之該等各別時間戳記中之至少一些中的每一者與該相關聯之資料映射單元儲存於該NVM中。
EC22)如EC4或EC5之方法,其中該等資料儲存單元中之一特定資料儲存單元與相關聯於該特定資料儲存單元之該各別時間戳記儲存於該NVM中,且該等資料映射單元中之一特定資料映射單元與相關聯於該特定資料映射單元之該各別時間戳記儲存於該NVM中。
EC23)一種方法,其包含:根據一儲存串流將複數個儲存單元寫入至一非揮發記憶體(NVM),該等儲存單元中之每一者包含一資料部分及一對應時間戳記部分;根據一映射串流將複數個映射單元寫入至該NVM,該等映射串流中之每一者包含一條目部分及一對應時間戳記部分;其中該等條目部分中之至少一些中之每一者使得能夠藉由指定該等資料部分中之至少一對應資料部分來判定各別邏輯區塊(LB)寫入於該NVM中何處;其中一時間性次序由該等時間戳記部分指示,該等儲存單元時間戳記部分根據一時間戳記次序彼此單調地增大,且該等映射單元時間戳記部分根據該時間戳記次序彼此單調地增大;且其中存在至少一個特定時間點,在該至少一個特定時間點,寫入至該NVM之該等映射單元中之至少一者具有一時間戳記部分,該時間戳記部分根據該時間性次序晚於在該特定時間點寫入至該NVM之該等儲存單元時間戳記部分中的根據該時間性次序最晚的儲存單元時間戳記部分。
EC24)如EC23之方法,其中該等儲存單元之該寫入以對應於如由該等儲存單元時間戳記部分指示的該時間性次序的一時間次序寫入該等儲存單元,且該等映射單元之該寫入以對應於如由該等映射單元時間戳記部分指示的該時間性次序的一時間次序寫入該等映射單元。
EC25)如EC23之方法,其進一步包含根據一檢查點串流將一或多個檢查點單元寫入至該NVM,該等檢查點單元中之每一者包含一映射部分及一對應時間戳記部分,且其中該等檢查點時間戳記部分根據該時間戳記次序彼此單調地增大。
EC26)如EC25之方法,其中該等檢查點單元之該寫入以對應於如由該等檢查點時間戳記部分指示的該時間性次序的時間次序寫入該等檢查點單元。
EC27)如EC25之方法,其中預定數目之該等檢查點單元的一連續群組包含該等條目部分所根據之一映射之至少一整個檢查點。
EC28)如EC27之方法,其進一步包含至少部分基於該等映射部分及/或該等檢查點單元時間戳記部分中之一或多者的一或多個部分來復原該映射。
EC29)如EC28之方法,其中該復原進一步至少部分基於該等條目部分及/或該等映射單元時間戳記部分中之一或多者的一或多個部分。
EC30)如EC29之方法,其中該復原進一步至少部分基於該等資料部分及/或該等儲存單元時間戳記部分中之一或多者的一或多個部分。
EC31)如EC30之方法,其中該等資料部分中之每一者包含各別一或多個資料單元及各別對應一或多個標頭,該等標頭中之每一者識別該等資料單元中之一各別對應資料單元與該等LB中之一者之間的一各別映射,該等映射使得能夠判定該等LB中之各別LB作為該等資料單元中之各別資料單元寫入於該NVM中何處;且其中該復原進一步至少部分基於寫入至該NVM之該等儲存單元中所包含的該等各別標頭中的一或多者。
EC32)如EC31之方法,其中該等條目部分中之一特定條目部分判定該各別LB之該各別資料部分,該各別資料部分包含該等標頭中之一特定標頭,且該特定標頭識別該等資料單元中之一特定資料單元與該特定條目部分之該各別LB之間的該各別映射。
EC33)如EC27之方法,其中該映射為一單階映射。
EC34)如EC33之方法,其進一步包含快取及/或緩衝該映射之至少一部分;且其中該等映射部分中之至少一者中的至少一些係根據該快取及/或該緩衝。
EC35)如EC27之方法,其中該映射為一雙階映射,該雙階映射包含一一階映射及一二階映射,該等映射部分對應於該一階映射之部分,且該等條目部分對應於該二階映射之條目。
EC36)如EC35之方法,其進一步包含快取及/或緩衝該一階映射及/或該二階映射之至少一部分;且其中該等映射部分及該等條目部分中之至少一者中的至少一些係根據該快取及/或該緩衝。
EC37)如EC27之方法,其中該等映射部分中之每一者係根據具有根據該時間性次序早於該各別映射部分之該對應時間戳記部分的對應時間戳記部分的所有該等條目部分。
EC38)如EC25之方法,其中該一個特定時間點為一第一特定時間點,且存在至少一第二特定時間點,在該至少一第二特定時間點,寫入至該NVM之該等檢查點單元中之至少一者具有一時間戳記部分,該時間戳記部分根據該時間性次序晚於在該第二特定時間點寫入至該NVM之該等映射單元時間戳記部分中的根據該時間性次序最晚的映射單元時間戳記部分。
EC39)如EC25之方法,其中該一個特定時間點為一第一特定時間點,且存在至少一第二特定時間點,在該至少一第二特定時間點,寫入至該NVM之該等檢查點單元中之至少一者具有一時間戳記部分,該時間戳記部分根據該時間性次序晚於在該第二特定時間點寫入至該NVM之該等儲存單元時間戳記部分中的根據該時間性次序最晚的儲存單元時間戳記部分。
EC40)如EC23之方法,其中該複數個儲存單元為第一複數個儲存單元,該儲存串流為一第一儲存串流,且進一步包含根據一第二儲存串流將第二複數個儲存單元寫入至該NVM,該等第二儲存單元中之每一者包含一資料部分及一對應時間戳記部分,且該第二儲存單元時間戳記部分根據該時間戳記次序彼此單調地增大。
EC41)如EC40之方法,其中該等第二儲存單元之該寫入以對應於如由該等第二儲存單元時間戳記部分指示的該時間性次序的時間次序寫入該等第二儲存單元。
EC42)如EC40之方法,其中該等第二儲存單元中之至少一者以時間次序寫入於該等第一儲存單元中之兩者之間,且該至少一個第二儲存單元之該時間戳記部分根據該時間性次序介於該兩個第一儲存單元之該等時間戳記部分之間。
EC43)如EC40之方法,其中該第一複數個儲存單元之該等資料部分中之至少一者包含與一主機資料寫入命令相關聯來自一主機的主機資料,且其中該第二複數個儲存單元之該等資料部分中之至少一者包含回應於一回收操作而自該NVM讀取之回收資料。
EC44)如EC23之方法,其中該等時間戳記部分經編碼以使得能夠經由正比較之該等時間戳記部分的數值比較根據該時間性次序而比較該等時間戳記部分。
EC45)如EC44之方法,其中該數值比較忽略正比較之該等時間戳記部分的一或多個連續最高有效位元。
EC46)如EC44之方法,其中若正比較之該等儲存單元時間戳記部分中之一特定儲存單元時間戳記部分數值上相同於正比較之該等映射單元時間戳記部分中之一特定映射單元時間戳記部分,則該比較藉由一預定來判定,該預定為當時間戳記部分相同時,正比較之該儲存單元時間戳記部分早於正比較之該映射單元時間戳記部分。
EC47)如EC46之方法,其中該數值相同性忽略正比較之該等時間戳記部分的一或多個連續最高有效位元。
EC48)如EC23之方法,其中該等條目部分中之每一者係根據具有根據該時間性次序早於該各別條目部分之該對應時間戳記部分的對應時間戳記部分的所有該等資料部分。
EC49)如EC23之方法,其中該等儲存單元中之每一者係以原子方式寫入。
EC50)如EC23之方法,其中該等映射單元中之每一者係以原子方式寫入。
EC51)如EC23之方法,其中該等資料部分中之至少一者包含與一主機資料寫入命令相關聯來自一主機的主機資料。
EC52)如EC23之方法,其中該等資料部分中之至少一者包含回應於一回收操作而自該NVM讀取之回收資料。
EC53)如EC23之方法,其中該等資料部分中之每一者包含各別一或多個資料單元及各別對應一或多個標頭,該等標頭中之每一者識別該等資料單元中之一各別對應資料單元與該等LB中之一者之間的一各別映射,且該等映射使得能夠判定該等LB中之各別LB作為該等資料單元中之各別資料單元寫入於該NVM中何處。
EC54)如EC53之方法,其中該等標頭中之每一者與由該各別標頭識別之該各別資料單元連續地寫入於該NVM中。
EC55)如EC2、EC9、EC43或EC51之方法,其進一步包含根據該等資料寫入與該主機介接。
EC56)如EC55之方法,其中該介接與一儲存介面標準相容。
EC57)如EC2、EC9、EC43或EC51之方法,其中該主機為一計算主機,且進一步包含根據該等資料寫入而操作該計算主機。
EC58)如EC1、EC5或EC23之方法,其中該NVM包含一或多個快閃記憶體。
EC59)如EC58之方法,其進一步包含經由一快閃記憶體介面與該等快閃記憶體介接。
EC60)一種有形電腦可讀媒體,其中儲存有一指令集,該等指令在由一處理元件執行時使該處理元件執行及/或控制包含以下各者之操作:以一第一次序將一系列資料單元配置於一非揮發記憶體(NVM)中,該等資料單元中之每一者與複數個時間戳記中之一各別時間戳記相關聯;以一第二次序將一系列資料映射單元配置於該NVM中,該等資料映射單元中之每一者與該複數個時間戳記中之一各別時間戳記相關聯;其中該等資料映射單元中之每一者包含該等資料單元中之一對應資料單元的該NVM中之一位置;且其中與該等資料單元中之每一者相關聯之該各別時間戳記係在與該對應資料映射單元相關聯之該各別時間戳記時或之前。
EC61)如EC60之有形電腦可讀媒體,其中:該等資料單元中之每一者對應於自一主機至一各別邏輯區塊位址(LBA)之一各別資料寫入;該等資料單元中之一先前資料單元及一後續資料單元對應於該等資料寫入中的至該等各別LBA中之一相同LBA的資料寫入;且該先前資料單元不具有該等資料映射單元中之一相關聯之資料映射單元。
EC62)如EC60之有形電腦可讀媒體,其中該等操作進一步包含:在一電源故障後,判定該等資料單元中之一最晚有效且連續之資料單元;在該電源故障後,判定該等資料映射單元中之一最晚有效且連續之資料映射單元,其中與該等資料映射單元中之該最晚有效且連續之資料映射單元相關聯的該各別時間戳記係在與該等資料單元中之該最晚有效且連續之資料單元相關聯的該各別時間戳記時或之前;僅恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元;及藉此,在恢復中,與在與該等資料單元中之該最晚有效且連續之資料單元相關聯的該各別時間戳記之後的任何該等各別時間戳記相關聯的任何該等資料映射單元被忽略。
EC63)如EC60之有形電腦可讀媒體,其中該等資料單元為資料儲存單元。
EC64)一種有形電腦可讀媒體,其中儲存有一指令集,該等指令在由一處理元件執行時使該處理元件執行及/或控制包含以下各者之操作:將一系列資料儲存單元寫入於一非揮發記憶體(NVM)中,該等資料儲存單元中之每一者與複數個時間戳記中之一各別時間戳記相關聯;將一系列資料映射單元寫入於該NVM中,該等資料映射單元中之每一者與該等時間戳記中之一各別時間戳記相關聯;其中該等資料映射單元中之每一者包含該等資料儲存單元中之一對應資料儲存單元的該NVM中之一位置;且其中與該等資料儲存單元中之每一者相關聯之該各別時間戳記指示一相對時代,該相對年代相同於或早期於與該對應資料映射單元相關聯之該各別時間戳記所指示之一相對時代。
EC65)如EC64之有形電腦可讀媒體,其中該等資料儲存單元之該寫入係根據一第一次序,且該等資料映射單元之該寫入係根據一第二次序。
EC66)如EC64之有形電腦可讀媒體,其中該等資料儲存單元根據一第一次序配置於該NVM中,且該等資料映射單元根據一第二次序配置於該NVM中。
EC67)如EC60、EC65或EC66之有形電腦可讀媒體,其中該第一次序不同於該第二次序。
EC68)如EC64之有形電腦可讀媒體,其中:該等資料儲存單元中之一第一資料儲存單元對應於自一主機至一特定邏輯區塊位址(LBA)之一第一資料寫入;該等資料儲存單元中之一第二資料儲存單元對應於自該主機至該特定LBA之一第二資料寫入;該第一資料寫入以時間次序優先於該第二資料寫入;且該等資料映射單元中無一者對應於該第一資料儲存單元。
EC69)如EC65之有形電腦可讀媒體,其中該等操作進一步包含:在一事件後且根據該第一次序判定該等資料儲存單元中之一最晚有效且連續之資料儲存單元;在該事件後且根據該第二次序判定該等資料映射單元中之一最晚有效且連續之資料映射單元,該等資料映射單元中之該最晚有效且連續之資料映射單元與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯,該相對時代相同於或早期於與該等資料儲存單元中之該最晚有效且連續之資料儲存單元相關聯之該各別時間戳記所指示之一相對時代;及根據該第一次序及該第二次序僅恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元。
EC70)如EC65之有形電腦可讀媒體,其中該等操作進一步包含:根據該第一次序判定該等資料儲存單元中之一第一資料儲存單元,該等資料儲存單元中之該第一資料儲存單元為該等資料儲存單元中之一最晚有效且連續之資料儲存單元;根據該第二次序判定該等資料映射單元中之一最晚有效且連續之資料映射單元,該等資料映射單元中之該最晚有效且連續之資料映射單元與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯,該相對時代相同於或早期於與該等資料儲存單元中之該最晚有效且連續之資料儲存單元相關聯之該各別時間戳記所指示之一相對時代;根據該第一次序判定該等資料儲存單元中之一第二資料儲存單元,該等資料儲存單元中之該第二資料儲存單元為與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯的該等資料儲存單元中之一最晚資料儲存單元,該相對時代相同於或早於先於與該等資料映射單元中之該最晚有效且連續之資料映射單元相關聯的該各別時間戳記所指示之該相對時代的一所判定之量;及使用該等資料單元中的單獨來自該等資料儲存單元中之該第二資料儲存單元至該等資料儲存單元中之該第一資料儲存單元的資料單元,根據該第一次序及該第二次序恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元。
EC71)如EC70之有形電腦可讀媒體,其中該等操作進一步包含:針對先前未寫入至該NVM之該等資料映射單元中的每一經修改之資料映射單元,識別與等於與該等資料儲存單元中之一特定資料儲存單元相關聯之該各別時間戳記的一最早期更新相關聯的該等時間戳記中之一各別時間戳記,該經修改之資料映射單元包含該特定資料儲存單元的該NVM中之該位置;及在寫入與大於晚於與該經修改之資料映射單元之該最早期更新相關聯的該各別時間戳記的該所判定之量的該等各別時間戳記中之一時間戳記相關聯的該等資料儲存單元中之一者時或之前,將先前未寫入至該NVM之該等經修改之資料映射單元中之每一者寫入至該NVM。
EC72)如EC69之有形電腦可讀媒體,其中該等操作進一步包含,關於該恢復,忽略具有指示一相對時代的一各別時間戳記的任何該等資料映射單元,該相對時代近期於該等資料儲存單元中之該最晚有效且連續之資料儲存單元的該各別時間戳記所指示之一相對時代。
EC73)如EC69之有形電腦可讀媒體,其中該事件包含一失靈。
EC74)如EC73之有形電腦可讀媒體,其中該失靈包含以下各者中之一或多者:一電源故障;一損壞;及一電路故障。
EC75)如EC63或EC64之有形電腦可讀媒體,其中該等資料映射單元中之至少兩者包含一相同位置,該相同位置為該等資料單元中之至少兩個各別資料單元的相同位址。
EC76)如EC63或EC64之有形電腦可讀媒體,其中該等操作進一步包含儲存與該等資料儲存單元中之至少一些相關聯之該各別時間戳記與該資料儲存單元,且儲存與該等資料映射單元中之至少一些相關聯之該各別時間戳記與該資料映射單元。
EC77)如EC63或EC64之有形電腦可讀媒體,其中該等資料儲存單元之該等各別時間戳記中的充分時間戳記與該等資料儲存單元一起儲存,以使得可藉由讀取該NVM來判定該等資料儲存單元中之每一者與該各別資料儲存單元的該各別時間戳記之間的該關聯。
EC78)如EC63或EC64之有形電腦可讀媒體,其中該等資料儲存單元之該等各別時間戳記中之至少一些中的每一者與該相關聯之資料儲存單元儲存於該NVM中。
EC79)如EC63或EC64之有形電腦可讀媒體,其中該等資料映射單元之該等各別時間戳記中的充分時間戳記與該等資料映射單元一起儲存,以使得可藉由讀取該NVM來判定該等資料映射單元中之每一者與該各別資料映射單元的該各別時間戳記之間的該關聯。
EC80)如EC63或EC64之有形電腦可讀媒體,其中該等資料映射單元之該等各別時間戳記中之至少一些中的每一者與該相關聯之資料映射單元儲存於該NVM中。
EC81)如EC63或EC64之有形電腦可讀媒體,其中該等資料儲存單元中之一特定資料儲存單元與相關聯於該特定資料儲存單元之該各別時間戳記儲存於該NVM中,且該等資料映射單元中之一特定資料映射單元與相關聯於該特定資料映射單元之該各別時間戳記儲存於該NVM中。
EC82)一種有形電腦可讀媒體,其中儲存有一指令集,該等指令在由一處理元件執行時使該處理元件執行及/或控制包含以下各者之操作:根據一儲存串流將複數個儲存單元寫入至一非揮發記憶體(NVM),該等儲存單元中之每一者包含一資料部分及一對應時間戳記部分;根據一映射串流將複數個映射單元寫入至該NVM,該等映射串流中之每一者包含一條目部分及一對應時間戳記部分;其中該等條目部分中之至少一些中之每一者使得能夠藉由指定該等資料部分中之至少一對應資料部分來判定各別邏輯區塊(LB)寫入於該NVM中何處;其中一時間性次序由該等時間戳記部分指示,該等儲存單元時間戳記部分根據一時間戳記次序彼此單調地增大,且該等映射單元時間戳記部分根據該時間戳記次序彼此單調地增大;且其中存在至少一個特定時間點,在該至少一個特定時間點,寫入至該NVM之該等映射單元中之至少一者具有一時間戳記部分,該時間戳記部分根據該時間性次序晚於在該特定時間點寫入至該NVM之該等儲存單元時間戳記部分中的根據該時間性次序最晚的儲存單元時間戳記部分。
EC83)如EC82之有形電腦可讀媒體,其中該等儲存單元之該寫入以對應於如由該等儲存單元時間戳記部分指示的該時間性次序的一時間次序寫入該等儲存單元,且該等映射單元之該寫入以對應於如由該等映射單元時間戳記部分指示的該時間性次序的一時間次序寫入該等映射單元。
EC84)如EC82之有形電腦可讀媒體,其中該等操作進一步包含根據一檢查點串流將一或多個檢查點單元寫入至該NVM,該等檢查點單元中之每一者包含一映射部分及一對應時間戳記部分,且其中該等檢查點時間戳記部分根據該時間戳記次序彼此單調地增大。
EC85)如EC84之有形電腦可讀媒體,其中該等檢查點單元之該寫入以對應於如由該等檢查點時間戳記部分指示的該時間性次序的時間次序寫入該等檢查點單元。
EC86)如EC84之有形電腦可讀媒體,其中預定數目之該等檢查點單元的一連續群組包含該等條目部分所根據之一映射之至少一整個檢查點。
EC87)如EC86之有形電腦可讀媒體,其中該等操作進一步包含至少部分基於該等映射部分及/或該等檢查點單元時間戳記部分中之一或多者的一或多個部分來復原該映射。
EC88)如EC87之有形電腦可讀媒體,其中該復原進一步至少部分基於該等條目部分及/或該等映射單元時間戳記部分中之一或多者的一或多個部分。
EC89)如EC88之有形電腦可讀媒體,其中該復原進一步至少部分基於該等資料部分及/或該等儲存單元時間戳記部分中之一或多者的一或多個部分。
EC90)如EC89之有形電腦可讀媒體,其中該等資料部分中之每一者包含各別一或多個資料單元及各別對應一或多個標頭,該等標頭中之每一者識別該等資料單元中之一各別對應資料單元與該等LB中之一者之間的一各別映射,該等映射使得能夠判定該等LB中之各別LB作為該等資料單元中之各別資料單元寫入於該NVM中何處;且其中該復原進一步至少部分基於寫入至該NVM之該等儲存單元中所包含的該等各別標頭中的一或多者。
EC91)如EC90之有形電腦可讀媒體,其中該等條目部分中之一特定條目部分判定該各別LB之該各別資料部分,該各別資料部分包含該等標頭中之一特定標頭,且該特定標頭識別該等資料單元中之一特定資料單元與該特定條目部分之該各別LB之間的該各別映射。
EC92)如EC86之有形電腦可讀媒體,其中該映射為一單階映射。
EC93)如EC92之有形電腦可讀媒體,其中該等操作進一步包含快取及/或緩衝該映射之至少一部分;且其中該等映射部分中之至少一者中的至少一些係根據該快取及/或該緩衝。
EC94)如EC86之有形電腦可讀媒體,其中該映射為一雙階映射,該雙階映射包含一一階映射及一二階映射,該等映射部分對應於該一階映射之部分,且該等條目部分對應於該二階映射之條目。
EC95)如EC94之有形電腦可讀媒體,其中該等操作進一步包含快取及/或緩衝該一階映射及/或該二階映射之至少一部分;且其中該等映射部分及該等條目部分中之至少一者中的至少一些係根據該快取及/或該緩衝。
EC96)如EC86之有形電腦可讀媒體,其中該等映射部分中之每一者係根據具有根據該時間性次序早於該各別映射部分之該對應時間戳記部分的對應時間戳記部分的所有該等條目部分。
EC97)如EC84之有形電腦可讀媒體,其中該一個特定時間點為一第一特定時間點,且存在至少一第二特定時間點,在該至少一第二特定時間點,寫入至該NVM之該等檢查點單元中之至少一者具有一時間戳記部分,該時間戳記部分根據該時間性次序晚於在該第二特定時間點寫入至該NVM之該等映射單元時間戳記部分中的根據該時間性次序最晚的映射單元時間戳記部分。
EC98)如EC84之有形電腦可讀媒體,其中該一個特定時間點為一第一特定時間點,且存在至少一第二特定時間點,在該至少一第二特定時間點,寫入至該NVM之該等檢查點單元中之至少一者具有一時間戳記部分,該時間戳記部分根據該時間性次序晚於在該第二特定時間點寫入至該NVM之該等儲存單元時間戳記部分中的根據該時間性次序最晚的儲存單元時間戳記部分。
EC99)如EC82之有形電腦可讀媒體,其中該複數個儲存單元為第一複數個儲存單元,該儲存串流為一第一儲存串流,且進一步包含根據一第二儲存串流將第二複數個儲存單元寫入至該NVM,該等第二儲存單元中之每一者包含一資料部分及一對應時間戳記部分,且該第二儲存單元時間戳記部分根據該時間戳記次序彼此單調地增大。
EC100)如EC99之有形電腦可讀媒體,其中該等第二儲存單元之該寫入以對應於如由該等第二儲存單元時間戳記部分指示的該時間性次序的時間次序寫入該等第二儲存單元。
EC101)如EC99之有形電腦可讀媒體,其中該等第二儲存單元中之至少一者以時間次序寫入於該等第一儲存單元中之兩者之間,且該至少一個第二儲存單元之該時間戳記部分根據該時間性次序介於該兩個第一儲存單元之該等時間戳記部分之間。
EC102)如EC99之有形電腦可讀媒體,其中該第一複數個儲存單元之該等資料部分中之至少一者包含與一主機資料寫入命令相關聯來自一主機的主機資料,且其中該第二複數個儲存單元之該等資料部分中之至少一者包含回應於一回收操作而自該NVM讀取之回收資料。
EC103)如EC82之有形電腦可讀媒體,其中該等時間戳記部分經編碼以使得能夠經由正比較之該等時間戳記部分的數值比較根據該時間性次序而比較該等時間戳記部分。
EC104)如EC103之有形電腦可讀媒體,其中該數值比較忽略正比較之該等時間戳記部分的一或多個連續最高有效位元。
EC105)如EC103之有形電腦可讀媒體,其中若正比較之該等儲存單元時間戳記部分中之一特定儲存單元時間戳記部分數值上相同於正比較之該等映射單元時間戳記部分中之一特定映射單元時間戳記部分,則該比較藉由一預定來判定,該預定為當時間戳記部分相同時,正比較之該儲存單元時間戳記部分早於正比較之該映射單元時間戳記部分。
EC106)如EC105之有形電腦可讀媒體,其中該數值相同性忽略正比較之該等時間戳記部分的一或多個連續最高有效位元。
EC107)如EC82之有形電腦可讀媒體,其中該等條目部分中之每一者係根據具有根據該時間性次序早於該各別條目部分之該對應時間戳記部分的對應時間戳記部分的所有該等資料部分。
EC108)如EC82之有形電腦可讀媒體,其中該等儲存單元中之每一者係以原子方式寫入。
EC109)如EC82之有形電腦可讀媒體,其中該等映射單元中之每一者係以原子方式寫入。
EC110)如EC82之有形電腦可讀媒體,其中該等資料部分中之至少一者包含與一主機資料寫入命令相關聯來自一主機的主機資料。
EC111)如EC82之有形電腦可讀媒體,其中該等資料部分中之至少一者包含回應於一回收操作而自該NVM讀取之回收資料。
EC112)如EC82之有形電腦可讀媒體,其中該等資料部分中之每一者包含各別一或多個資料單元及各別對應一或多個標頭,該等標頭中之每一者識別該等資料單元中之一各別對應資料單元與該等LB中之一者之間的一各別映射,且該等映射使得能夠判定該等LB中之各別LB作為該等資料單元中之各別資料單元寫入於該NVM中何處。
EC113)如EC112之有形電腦可讀媒體,其中該等標頭中之每一者與由該各別標頭識別之該各別資料單元連續地寫入於該NVM中。
EC114)如EC61、EC68、EC102或EC110之有形電腦可讀媒體,其中該等操作進一步包含根據該等資料寫入與該主機介接。
EC115)如EC114之有形電腦可讀媒體,其中該介接與一儲存介面標準相容。
EC116)如EC61、EC68、EC102或EC110之有形電腦可讀媒體,其中該主機為一計算主機,且其中該計算主機根據該等資料寫入而操作。
EC117)如EC60、EC64或EC82之有形電腦可讀媒體,其中該NVM包含一或多個快閃記憶體。
EC118)如EC117之有形電腦可讀媒體,其中該等操作進一步包含經由一快閃記憶體介面與該等快閃記憶體介接。
EC119)一種裝置,其包含:第一硬體邏輯電路,其經啟用以按一第一次序將一系列資料單元配置於一非揮發記憶體(NVM)中,該等資料單元中之每一者與複數個時間戳記中之一各別時間戳記相關聯;第二硬體邏輯電路,其經啟用以按一第二次序將一系列資料映射單元配置於該NVM中,該等資料映射單元中之每一者與該複數個時間戳記中之一各別時間戳記相關聯;其中該等資料映射單元中之每一者包含該等資料單元中之一對應資料單元的該NVM中之一位置;且其中與該等資料單元中之每一者相關聯之該各別時間戳記係在與該對應資料映射單元相關聯之該各別時間戳記時或之前。
EC120)如EC119之裝置,其中該第一硬體邏輯電路之至少一部分為共用之硬體邏輯電路,該共用之硬體邏輯電路亦為該第二硬體邏輯電路之至少一部分。
EC121)如EC119之裝置,其中:該等資料單元中之每一者對應於自一主機至一各別邏輯區塊位址(LBA)之一各別資料寫入;該等資料單元中之一先前資料單元及一後續資料單元對應於該等資料寫入中的至該等各別LBA中之一相同LBA的資料寫入;且該先前資料單元不具有該等資料映射單元中之一相關聯之資料映射單元。
EC122)如EC119之裝置,其進一步包含:第三硬體邏輯電路,其經啟用以在一電源故障後,判定該等資料單元中之一最晚有效且連續之資料單元;第四硬體邏輯電路,其經啟用以在該電源故障後,判定該等資料映射單元中之一最晚有效且連續之資料映射單元,其中與該等資料映射單元中之該最晚有效且連續之資料映射單元相關聯的該各別時間戳記係在與該等資料單元中之該最晚有效且連續之資料單元相關聯的該各別時間戳記時或之前;第五硬體邏輯電路,其經啟用以僅恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元;及藉此,在恢復中,與在與該等資料單元中之該最晚有效且連續之資料單元相關聯的該各別時間戳記之後的任何該等各別時間戳記相關聯的任何該等資料映射單元被忽略。
EC123)如EC119之裝置,其中該等資料單元為資料儲存單元。
EC124)一種裝置,其包含:第一硬體邏輯電路,其經啟用以將一系列資料儲存單元寫入於一非揮發記憶體(NVM)中,該等資料儲存單元中之每一者與複數個時間戳記中之一各別時間戳記相關聯;第二硬體邏輯電路,其經啟用以將一系列資料映射單元寫入於該NVM中,該等資料映射單元中之每一者與該等時間戳記中之一各別時間戳記相關聯;其中該等資料映射單元中之每一者包含該等資料儲存單元中之一對應資料儲存單元的該NVM中之一位置;且其中與該等資料儲存單元中之每一者相關聯之該各別時間戳記指示一相對時代,該相對年代相同於或早期於與該對應資料映射單元相關聯之該各別時間戳記所指示之一相對時代。
EC125)如EC124之裝置,其中該第一硬體邏輯電路之至少一部分為共用之硬體邏輯電路,該共用之硬體邏輯電路亦為該第二硬體邏輯電路之至少一部分。
EC126)如EC124之裝置,其中該等資料儲存單元之該寫入係根據一第一次序,且該等資料映射單元之該寫入係根據一第二次序。
EC127)如EC124之裝置,其中該等資料儲存單元根據一第一次序配置於該NVM中,且該等資料映射單元根據一第二次序配置於該NVM中。
EC128)如EC124之裝置,其中:該等資料儲存單元中之一第一資料儲存單元對應於自一主機至一特定邏輯區塊位址(LBA)之一第一資料寫入;該等資料儲存單元中之一第二資料儲存單元對應於自該主機至該特定LBA之一第二資料寫入;該第一資料寫入以時間次序優先於該第二資料寫入;且該等資料映射單元中無一者對應於該第一資料儲存單元。
EC129)如EC126之裝置,其進一步包含:第三硬體邏輯電路,其經啟用以在一事件後且根據該第一次序判定該等資料儲存單元中之一最晚有效且連續之資料儲存單元;第四硬體邏輯電路,其經啟用以在該事件後且根據該第二次序判定該等資料映射單元中之一最晚有效且連續之資料映射單元,該等資料映射單元中之該最晚有效且連續之資料映射單元與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯,該相對時代相同於或早期於與該等資料儲存單元中之該最晚有效且連續之資料儲存單元相關聯之該各別時間戳記所指示之一相對時代;及第五硬體邏輯電路,其經啟用以根據該第一次序及該第二次序僅恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元。
EC130)一種裝置,其包含:第一硬體邏輯電路,其經啟用以根據一儲存串流將複數個儲存單元寫入至一非揮發記憶體(NVM),該等儲存單元中之每一者包含一資料部分及一對應時間戳記部分;第二硬體邏輯電路,其經啟用以根據一映射串流將複數個映射單元寫入至該NVM,該等映射串流中之每一者包含一條目部分及一對應時間戳記部分;其中該等條目部分中之至少一些中之每一者使得能夠藉由指定該等資料部分中之至少一對應資料部分來判定各別邏輯區塊(LB)寫入於該NVM中何處;其中一時間性次序由該等時間戳記部分指示,該等儲存單元時間戳記部分根據一時間戳記次序彼此單調地增大,且該等映射單元時間戳記部分根據該時間戳記次序彼此單調地增大;且其中存在至少一個特定時間點,在該至少一個特定時間點,寫入至該NVM之該等映射單元中之至少一者具有一時間戳記部分,該時間戳記部分根據該時間性次序晚於在該特定時間點寫入至該NVM之該等儲存單元時間戳記部分中的根據該時間性次序最晚的儲存單元時間戳記部分。
EC131)如EC130之裝置,其中該第一硬體邏輯電路之至少一部分為共用之硬體邏輯電路,該共用之硬體邏輯電路亦為該第二硬體邏輯電路之至少一部分。
EC132)如EC130之裝置,其中該第一硬體邏輯電路以對應於如由該等儲存單元時間戳記部分指示的該時間性次序的一時間次序寫入該等儲存單元,且該第二硬體邏輯電路以對應於如由該等映射單元時間戳記部分指示的該時間性次序的一時間次序寫入該等映射單元。
EC133)如EC130之裝置,其進一步包含:第三硬體邏輯電路,其經啟用以根據一檢查點串流將一或多個檢查點單元寫入至該NVM,該等檢查點單元中之每一者包含一映射部分及一對應時間戳記部分,且其中該等檢查點時間戳記部分根據該時間戳記次序彼此單調地增大。
EC134)如EC133之裝置,其中該第三硬體邏輯電路以對應於如由該等檢查點時間戳記部分指示的該時間性次序的時間次序寫入該等檢查點單元。
EC135)如EC133之裝置,其中預定數目之該等檢查點單元的一連續群組包含該等條目部分所根據之一映射之至少一整個檢查點。
EC136)具有或涉及一儲存介面標準之任何前述EC,其中該儲存介面標準包含以下各者中之一或多者:一通用串列匯流排(USB)介面標準,一緊密快閃記憶體(CF)介面標準,一多媒體卡(MMC)介面標準,一嵌入式MMC(eMMC)介面標準,一霹靂介面標準,一UFS介面標準,一安全數位(SD)介面標準,一記憶棒介面標準,一xD圖像卡介面標準,一整合驅動電子(IDE)介面標準,一串列進階附接技術(SATA)介面標準,一外部SATA(eSATA)介面標準,一小型電腦系統介面(SCSI)介面標準,一串列附接小型電腦系統介面(SAS)介面標準,一光纖通道介面標準,一乙太網路介面標準,及一快速周邊組件互連(PCIe)介面標準。
EC137)具有或涉及一快閃記憶體介面之任何前述EC,其中該快閃記憶體介面與以下各者中之一或多者相容:一開放「反及」快閃記憶體介面(ONFI),一雙態觸變模式介面,一雙資料速率(DDR)同步介面,一DDR2同步介面,一同步介面,及一非同步介面。
EC138)具有或涉及一計算主機之任何前述EC,其中該計算主機包含以下各者中之一或多者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器,一儲存附接網路(SAN),一網路附接儲存(NAS)器件,一直接附接儲存(DAS)器件,一儲存設備,一個人電腦(PC),一膝上型電腦,一筆記型電腦,一迷你筆記型電腦,一平板型器件或電腦,一超輕薄筆記型電腦,一電子閱讀器件(一電子閱讀器),一個人數位助理(PDA),一導航系統,一(手持型)全球定位系統(GPS)器件,一汽車控制系統,一汽車媒體控制系統或電腦,一印表機、影印機或傳真機或一體式器件,一銷售點(POS)器件,一收銀機,一媒體播放器,一電視,一媒體記錄器,一數位視訊記錄器(DVR),一數位相機,一蜂巢式手機,一無線電話手機,及一電子遊戲機。
EC139)具有或涉及至少一個快閃記憶體之任何前述EC,其中該至少一個快閃記憶體之至少一部分包含以下各者中之一或多者:「反及」快閃技術儲存晶胞,及「反或」快閃技術儲存晶胞。
EC140)具有或涉及至少一個快閃記憶體之任何前述EC,其中該至少一個快閃記憶體之至少一部分包含以下各者中之一或多者:單位階晶胞(SLC)快閃技術儲存晶胞,及多位階晶胞(MLC)快閃技術儲存晶胞。
EC141)具有或涉及至少一個快閃記憶體之任何前述EC,其中該至少一個快閃記憶體之至少一部分包含以下各者中之一或多者:基於多晶矽技術之電荷儲存晶胞,及基於氮化矽技術之電荷儲存晶胞。
EC142)具有或涉及至少一個快閃記憶體之任何前述EC,其中該至少一個快閃記憶體之至少一部分包含以下各者中之一或多者:基於二維技術之快閃記憶體技術,及基於三維技術之快閃記憶體技術。 系統
在一些實施例中,I/O器件(諸如,SSD)包括SSD控制器。SSD控制器充當SSD之主機介面與NVM之間的橋接器,且執行經由SSD之主機介面自計算主機發送之主機協定之命令。該等命令中之至少一些指導SSD寫入及讀取具有分別自計算主機發送及發送至計算主機之資料的NVM。在其他實施例中,啟用SSD控制器以使用映射來在主機協定之LBA與NVM之實體儲存位址之間進行轉譯。在其他實施例中,該映射之至少一部分用於I/O器件之私用儲存(計算主機不可見)。舉例而言,不可由計算主機存取之LBA之部分由I/O器件使用以管理對記錄檔、統計資料或其他私用資料的存取。
在一些實施例中,存取NVM中之變化大小之配量的壓縮資料在一些使用情形中提供改良之儲存效率。舉例而言,SSD控制器自計算主機接收(未壓縮)資料(例如,與磁碟寫入命令相關),壓縮該資料,且將經壓縮之資料儲存至快閃記憶體中。回應於來自計算主機之後續請求(例如,與磁碟讀取命令相關),SSD控制器自快閃記憶體讀取經壓縮之資料,對經壓縮之資料進行解壓縮,且將經解壓縮之資料提供至計算主機。根據變化大小之配量將經壓縮之資料儲存於快閃記憶體中,該配量大小歸因於(例如)關於各種資料之壓縮演算法、操作模式及壓縮效率而變化。SSD控制器部分地藉由查閱(consult)所包括之映射表對資料進行解壓縮以判定標頭儲存於快閃記憶體中何處。SSD控制器剖析自快閃記憶體獲得之標頭以判定適當(經壓縮之)資料儲存於快閃記憶體中何處。SSD控制器解壓縮來自快閃記憶體之適當資料來產生經解壓縮之資料以提供至計算主機。在本申請案中,解壓縮(uncompress)(及其變體)與解壓(decompress)(及其變體)同義。
在各種實施例中,SSD控制器包括用於與計算主機介接之主機介面、用於與諸如快閃記憶體之NVM介接之介面,及用於控制該等介面且執行(及/或控制該執行之各種態樣)壓縮及解壓縮與較低階冗餘及/或錯誤校正、較高階冗餘及/或錯誤校正及以獨立矽元件進行之動態較高階冗餘模式管理之電路。
根據各種實施例,一些主機介面與以下各者中之一或多者相容:USB介面標準、CF介面標準、MMC介面標準、eMMC介面標準、霹靂(Thunderbolt)介面標準、UFS介面標準、SD介面標準、記憶棒介面標準、xD圖像卡介面標準、IDE介面標準、SATA介面標準、SCSI介面標準、SAS介面標準及PCIe介面標準。根據各種實施例,計算主機為以下各者中之全部或任何部分:電腦、工作站電腦、伺服器電腦、儲存伺服器、SAN、NAS器件、DAS器件、儲存設備、PC、膝上型電腦、筆記型電腦、迷你筆記型電腦、平板型器件或電腦、超輕薄筆記型(ultrabook)電腦、電子閱讀器件(諸如,電子閱讀器)、PDA、導航系統、(手持型)GPS器件、汽車控制系統、汽車媒體控制系統或電腦、印表機、影印機或傳真機或一體式器件、POS器件、收銀機、媒體播放器、電視、媒體記錄器、DVR、數位相機、蜂巢式手機、無線電話手機及電子遊戲機。在一些實施例中,介接主機(諸如,SAS/SATA橋接器)作為計算主機及/或至計算主機之橋接器來操作。
在各種實施例中,SSD控制器包括一或多個處理器。該等處理器執行韌體以控制及/或執行SSD控制器之操作。SSD控制器與計算主機通信以發送及接收命令及/或狀態以及資料。計算主機執行作業系統、驅動程式及應用程式中之一或多者。由計算主機與SSD控制器進行之通信視情況及/或選擇性地經由驅動程式及/或經由應用程式進行。在第一實例中,至SSD控制器之所有通信係經由驅動程式進行,且應用程式將較高階命令提供至驅動程式,驅動程式將該等命令轉譯成用於SSD控制器之具體命令。在第二實例中,驅動程式實施旁路模式且應用程式經啟用以經由驅動程式將具體命令發送至SSD控制器。在第三實例中,PCIe SSD控制器支援一或多個虛擬功能(VF),從而使得應用程式(一旦經組態)能夠繞過驅動程式直接與SSD控制器通信。
根據各種實施例,一些SSD與由磁性及/或光學非揮發儲存器(諸如,HDD、CD光碟機及DVD光碟機)使用之外形尺寸、電介面及/或協定相容。在各種實施例中,SSD使用零或多個同位碼、零或多個RS碼、零或多個BCH碼、零或多個維特比(Viterbi)碼或其他格形碼(trellis code)及零或多個LDPC碼之各種組合。
圖1A說明SSD 101之實施例之選定細節,SSD 101包括將自我記錄及階層一致性用於管理諸如快閃記憶體之非揮發儲存器的SSD控制器。SSD控制器用於管理(諸如)經由NVM元件(例如,快閃記憶體)實施之非揮發儲存器。SSD控制器100經由一或多個外部介面110以通信方式耦接至一主機(未說明)。根據各種實施例,外部介面110為以下各者中之一或多者:SATA介面;SAS介面;PCIe介面;光纖通道介面;乙太網路介面(諸如,10吉位元(Gigabit)乙太網路);任何前述介面的非標準版本;定製介面;或用以將儲存及/或通信及/或計算器件互連的任何其他類型之介面。舉例而言,在一些實施例中,SSD控制器100包括SATA介面及PCIe介面。
SSD控制器100進一步經由一或多個器件介面190以通信方式耦接至包括一或多個儲存器件(諸如,快閃記憶體器件192之一或多個例項)之NVM 199。根據各種實施例,器件介面190為以下各者中之一或多者:非同步介面;同步介面;單資料速率(SDR)介面;雙資料速率(DDR)介面;DRAM相容之DDR或DDR2同步介面;ONFI相容介面,諸如ONFI 2.2或ONFI 3.0相容介面;雙態觸變模式(Toggle-mode)相容之快閃記憶體介面;任何前述介面的非標準版本;定製介面;或用以連接至儲存器件的任何其他類型之介面。
在一些實施例中,快閃記憶體器件192中之每一者具有一或多個個別快閃記憶體晶粒194。根據快閃記憶體器件192中之特定快閃記憶體器件的類型,特定快閃記憶體器件192中之複數個快閃記憶體晶粒194可視情況及/或選擇性地並列存取。快閃記憶體器件192僅表示經啟用以按通信方式耦接至SSD控制器100之一種類型之儲存器件。在各種實施例中,可使用任何類型之儲存器件,諸如SLC「反及」快閃記憶體、MLC「反及」快閃記憶體、「反或」快閃記憶體、使用基於多晶矽或氮化矽技術之電荷儲存晶胞的快閃記憶體、基於二維或三維技術之快閃記憶體、唯讀記憶體、靜態隨機存取記憶體、動態隨機存取記憶體、鐵磁性記憶體、相變記憶體、賽道記憶體、ReRAM或任何其他類型之記憶體器件或儲存媒體。
根據各種實施例,器件介面190組織為:每一匯流排具有快閃記憶體器件192之一或多個例項的一或多個匯流排;每一匯流排具有快閃記憶體器件192之一或多個例項的一或多個匯流排之群組,其中一群組中之匯流排大體上被並列地存取;或快閃記憶體器件192之一或多個例項至器件介面190上的任何其他組織。
在圖1A中繼續,SSD控制器100具有一或多個模組,諸如主機介面111、資料處理121、緩衝器131、映射141、回收器151、ECC 161、器件介面邏輯191,及CPU 171。圖1A中所說明之具體模組及互連僅表示一個實施例,且設想到該等模組中之一些或全部以及未說明之額外模組的許多配置及互連。在第一實例中,在一些實施例中,存在兩個或兩個以上主機介面111以提供雙埠。在第二實例中,在一些實施例中,資料處理121及/或ECC 161與緩衝器131組合。在第三實例中,在一些實施例中,主機介面111直接耦接至緩衝器131,且資料處理121視情況及/或選擇性地對儲存於緩衝器131中之資料進行操作。在第四實例中,在一些實施例中,器件介面邏輯191直接耦接至緩衝器131,且ECC 161視情況及/或選擇性地對儲存於緩衝器131中之資料進行操作。
主機介面111經由外部介面110發送及接收命令及/或資料,且在一些實施例中,經由標籤追蹤113追蹤個別命令之進行。舉例而言,該等命令包括指定將進行讀取之位址(諸如,LBA)及資料量(諸如,LBA配量(例如,磁區)之數目)的讀取命令;作為回應,SSD提供讀取狀態及/或讀取資料。另舉例而言,該等命令包括指定將進行寫入之位址(諸如,LBA)及資料量(諸如,LBA配量(例如,磁區)之數目)的寫入命令;作為回應,SSD提供寫入狀態及/或請求寫入資料且視情況隨後提供寫入狀態。再舉例而言,該等命令包括指定不再需要被分配之一或多個位址(諸如,一或多個LBA)的解除分配命令(例如,修剪命令);作為回應,SSD相應地修改映射且視情況提供解除分配狀態。在一些內容脈絡中,ATA相容TRIM命令為例示性解除分配命令。再舉例而言,該等命令包括超級電容器測試命令或資料強化成功查詢;作為回應,SSD提供適當之狀態。在一些實施例中,主機介面111與SATA協定相容,且使用NCQ命令,使得主機介面111能夠具有至多32個未決命令,每一未決命令具有表示為自0至31之數字的獨特標籤。在一些實施例中,啟用標籤追蹤113以使用於經由外部介面110接收之命令的外部標籤與用以在由SSD控制器100處理期間追蹤命令之內部標籤相關聯。
根據各種實施例,實現以下情形中之一或多者:資料處理121視情況及/或選擇性地處理在緩衝器131與外部介面110之間發送的一些或所有資料;及資料處理121視情況及/或選擇性地處理儲存於緩衝器131中之資料。在一些實施例中,資料處理121使用一或多個引擎123來執行以下各者中之一或多者:格式化;重新格式化;轉碼;及任何其他資料處理及/或操縱任務。
緩衝器131儲存自器件介面190發送至外部介面110/自外部介面110發送至器件介面190的資料。在一些實施例中,緩衝器131額外地儲存由SSD控制器100使用以管理快閃記憶體器件192之一或多個例項的系統資料,諸如一些或所有映射表。在各種實施例中,緩衝器131具有以下各者中之一或多者:用於臨時儲存資料之記憶體137;用以控制資料移動至緩衝器131及/或自緩衝器131移動資料之DMA133;及用以提供較高階錯誤校正及/或冗餘功能之ECC-X135;及其他資料移動及/或操縱功能。較高階冗餘功能之實例為類似RAID之能力(例如,RASIE),其中冗餘處於快閃記憶體器件(例如,快閃記憶體器件192中之多者)階層及/或快閃記憶體晶粒(例如,快閃記憶體晶粒194)階層而非處於磁碟階層。
根據各種實施例,實現以下情形中之一或多者:ECC 161視情況及/或選擇性地處理在緩衝器131與器件介面190之間發送的一些或所有資料;及ECC 161視情況及/或選擇性地處理儲存於緩衝器131中之資料。在一些實施例中,ECC 161用以(諸如)根據一或多種ECC技術來提供較低階錯誤校正及/或冗餘功能。在一些實施例中,ECC 161實施以下各者中之一或多者:CRC碼;漢明碼;RS碼;BCH碼;LDPC碼;維特比碼;格形碼;硬決策碼;軟決策碼;基於抹除之碼;任何錯誤偵測及/或校正碼;及前述各者之任何組合。在一些實施例中,ECC 161包括一或多個解碼器(諸如,LDPC解碼器)。
器件介面邏輯191經由器件介面190控制快閃記憶體器件192之例項。啟用器件介面邏輯191以根據快閃記憶體器件192之協定將資料發送至快閃記憶體器件192之例項/自快閃記憶體器件192之例項發送資料。器件介面邏輯191包括用以經由器件介面190選擇性地順序控制快閃記憶體器件192之例項的排程193。舉例而言,在一些實施例中,啟用排程193以將至快閃記憶體器件192之例項的操作排入佇列,且在快閃記憶體器件192(或快閃記憶體晶粒194)之例項中的個別例項可用時選擇性地將該等操作發送至快閃記憶體器件192(或快閃記憶體晶粒194)之例項的個別例項。
映射141使用將外部資料位址映射至NVM 199中之位置的表143而在用於外部介面110上之資料定址與用於器件介面190上之資料定址之間轉換。舉例而言,在一些實施例中,映射141經由由表143提供之映射將用於外部介面110上之LBA轉換成目標為一或多個快閃記憶體晶粒194之區塊及/或頁面位址。對於因為磁碟機製造或解除分配而從未被寫入之LBA,若讀取該等LBA,則映射指向傳回之預設值。舉例而言,當處理解除分配命令時,該映射經修改以使得對應於經解除分配之LBA的條目指向預設值中之一者。在各種實施例中,存在各種預設值,每一預設值具有對應指標。該複數個預設值使得能夠將一些經解除分配之LBA(諸如,在第一範圍中)讀取為一預設值,而將其他經解除分配之LBA(諸如,在第二範圍中)讀取為另一預設值。在各種實施例中,藉由快閃記憶體、硬體、韌體、命令及/或原始引數及/或參數、可程式化暫存器或其各種組合來定義該等預設值。
在一些實施例中,映射141使用表143來執行及/或查找用於外部介面110上之位址與用於器件介面190上之資料定址之間的轉譯。根據各種實施例,表143為以下各者中之一或多者:單階映射;雙階映射;多階映射;映射快取;壓縮之映射;自一個位址空間至另一位址空間的任何類型之映射;及前述各者之任何組合。根據各種實施例,表143包括以下各者中之一或多者:靜態隨機存取記憶體;動態隨機存取記憶體;NVM(諸如,快閃記憶體);快取記憶體;晶片上記憶體;晶片外記憶體;及前述各者之任何組合。
在一些實施例中,回收器151執行廢棄項目收集。舉例而言,在一些實施例中,快閃記憶體器件192之例項含有在區塊可重新寫入之前必須被抹除的區塊。啟用回收器151以(諸如)藉由掃描由映射141維持之映射來判定快閃記憶體器件192之例項之哪些部分正在使用中(例如,經分配而非解除分配),且藉由抹除快閃記憶體器件192之例項之未使用(例如,解除分配)部分而使其可用於寫入。在其他實施例中,啟用回收器151以移動儲存於快閃記憶體器件192之例項內的資料以使快閃記憶體器件192之例項之較大連續部分可用於寫入。
在一些實施例中,選擇性地及/或動態地組態、管理及/或使用快閃記憶體器件192之例項以具有用於儲存不同類型及/或屬性之資料的一或多個帶。帶之數目、配置、大小及類型可動態地改變。舉例而言,將來自計算主機之資料寫入至熱(作用)帶中,而將來自回收器151之資料寫入至冷(較不作用)帶中。在一些使用情形中,若計算主機寫入長之順序串流,則熱帶之大小增長,而若計算主機執行隨機寫入或很少寫入,則冷帶之大小增長。
CPU 171控制SSD控制器100之各種部分。CPU 171包括CPU核心172。根據各種實施例,CPU核心172為一或多個單核心或多核心處理器。在一些實施例中,CPU核心172中之個別處理器核心為多執行緒的。CPU核心172包括指令及/或資料快取記憶體及/或記憶體。舉例而言,指令記憶體含有使得CPU核心172能夠執行程式(例如,軟體(有時稱為韌體))以控制SSD控制器100的指令。在一些實施例中,由CPU核心172執行之韌體中的一些或全部儲存於快閃記憶體器件192之例項(如說明為(例如)圖1B中之NVM 199之韌體106)上。
在各種實施例中,CPU 171進一步包括:命令管理173,其用以在經由外部介面110接收之命令在進行中的同時追蹤及控制該等命令;緩衝器管理175,其用以控制緩衝器131之分配及使用;轉譯管理177,其用以控制映射141;連貫性管理179,其用以控制資料定址之一致性且用以避免(諸如)在外部資料存取與回收資料存取之間的衝突;器件管理181,其用以控制器件介面邏輯191;識別碼管理182,其用以控制識別碼資訊之修改及通信;及視情況其他管理單元。根據各種實施例,由CPU 171執行之管理功能中無一者、任一者或全部係藉由硬體、藉由軟體(諸如,在CPU核心172上或在經由外部介面110連接之主機上執行的韌體)或其任何組合來控制及/或管理。
在一些實施例中,啟用CPU 171以執行其他管理任務,諸如以下各者中之一或多者:搜集及/或報告效能統計資料;實施SMART;控制電源定序,控制及/或監視及/或調整電力消耗;對電源故障作出回應;控制及/或監視及/或調整時脈速率;及其他管理任務。
各種實施例包括計算主機快閃記憶體控制器,其類似於SSD控制器100且(諸如)經由主機介面111及/或外部介面110之調適與各種計算主機之操作相容。各種計算主機包括以下各者中之一者或任何組合:電腦、工作站電腦、伺服器電腦、儲存伺服器、SAN、NAS器件、DAS器件、儲存設備、PC、膝上型電腦、筆記型電腦、迷你筆記型電腦、平板型器件或電腦、超輕薄筆記型電腦、電子閱讀器件(諸如,電子閱讀器)、PDA、導航系統、(手持型)GPS器件、汽車控制系統、汽車媒體控制系統或電腦、印表機、影印機或傳真機或一體式器件、POS器件、收銀機、媒體播放器、電視、媒體記錄器、DVR、數位相機、蜂巢式手機、無線電話手機及電子遊戲機。
在各種實施例中,SSD控制器(或計算主機快閃記憶體控制器)之全部或任何部分實施於單一IC、多晶粒IC之單一晶粒、多晶粒IC之複數個晶粒或複數個IC上。舉例而言,緩衝器131實施於與SSD控制器100之其他元件相同的晶粒上。另舉例而言,緩衝器131實施於不同於SSD控制器100之其他元件的晶粒上。
圖1B說明包括圖1A之SSD之一或多個例項的系統之各種實施例之選定細節。SSD 101包括經由器件介面190耦接至NVM 199之SSD控制器100。該圖說明各種類別之實施例:直接耦接至主機之單一SSD;各自分別經由各別外部介面直接耦接至主機之複數個SSD;及經由各種互連元件間接耦接至主機的一或多個SSD。
作為直接耦接至主機之單一SSD的實例實施例,SSD101之一個例項經由外部介面110直接耦接至主機102(例如,省略、繞過或透通交換機/網狀架構/中間控制器103)。作為各自經由各別外部介面直接耦接至主機之複數個SSD的實例實施例,SSD 101之複數個例項中的每一者分別經由外部介面110之各別例項直接耦接至主機102(例如,省略、繞過或透通交換機/網狀架構/中間控制器103)。作為經由各種互連元件間接耦接至主機之一或多個SSD的實例實施例,SSD 101之一或多個例項中的每一者分別間接耦接至主機102。每一間接耦接係經由耦接至交換機/網狀架構/中間控制器103之外部介面110及耦接至主機102之中間介面104之各別例項進行。
包括交換機/網狀架構/中間控制器103之實施例中的一些亦包括經由記憶體介面180耦接且可由SSD存取之卡式記憶體112C。在各種實施例中,SSD、交換機/網狀架構/中間控制器及/或卡式記憶體中之一或多者包括於實體可識別模組、卡或可插入元件(例如,I/O卡116)上。在一些實施例中,SSD 101(或其變化)對應於耦接至作為主機102操作之啟動器的SAS磁碟機或SATA磁碟機。
啟用主機102以執行主機軟體115之各種元件,諸如OS 105、驅動程式107、應用程式109及多器件管理軟體114之各種組合。點線箭頭107D表示主機軟體←→I/O器件通信,例如,將資料發送至SSD 101之例項中的一或多者/自SSD 101之例項中的一或多者接收資料及自經由驅動程式107之OS 105、驅動程式107及應用程式109(經由驅動程式107或直接作為VF)中之任何一或多者接收資料/將資料發送至經由驅動程式107之OS 105、驅動程式107及應用程式109(經由驅動程式107或直接作為VF)中之任何一或多者。
OS 105包括驅動程式(由驅動程式107概念性地說明)及/或經啟用以與該驅動程式一起操作以用於與SSD介接。Windows之各種版本(例如,95、98、ME、NT、XP、2000、Server、Vista,及7)、Linux之各種版本(例如,Red Hat、Debian,及Ubuntu)及MacOS之各種版本(例如,8、9及X)為OS 105之實例。在各種實施例中,驅動程式為可與標準介面及/或協定(諸如,SATA、AHCI或快速NVM)一起操作之標準及/或通用驅動程式(有時稱為「收縮包裝」或「預先安裝」),或視情況經定製及/或為供應商特定的以使得能夠使用對SSD 101特定之命令。一些磁碟機及/或驅動程式具有透通模式以經由最佳化「反及」存取(有時稱為ONA)或直接「反及」存取(有時稱為DNA)技術啟用應用階層程式(諸如,應用程式109)來將命令直接傳達至SSD 101,從而使得定製應用程式能夠甚至與通用驅動程式一起使用對SSD 101特定之命令。ONA技術包括以下各者中之一或多者:非標準修改程式(提示)之使用;供應商特定命令之使用;非標準統計資料(諸如,根據壓縮率之實際NVM使用)之傳達;及其他技術。DNA技術包括以下各者中之一或多者:提供對NVM之未經映射的讀取、寫入及/或抹除存取的非標準命令或供應商特定命令之使用;提供對NVM之較直接存取(諸如,藉由繞過I/O器件原本將執行之資料之格式化)之非標準或供應商特定命令的使用;及其他技術。驅動程式之實例為無ONA或DNA支援之驅動程式、具備ONA能力之驅動程式、具備DNA能力之驅動程式,及具備ONA/DNA能力之驅動程式。驅動程式之其他實例為供應商提供、供應商開發及/或供應商增強之驅動程式,以及用戶端提供、用戶端開發及/或用戶端增強之驅動程式。
應用階層程式之實例為無ONA或DNA支援之應用程式、具備ONA能力之應用程式、具備DNA能力之應用程式,及具備ONA/DNA能力之應用程式。點線箭頭109D表示應用程式←→I/O器件通信(例如,經由驅動程式而繞過或經由用於應用程式之VF而繞過),例如,具備ONA能力之應用程式及具備ONA能力之驅動程式(諸如)在無使用OS作為中間物之應用程式的情況下與SSD通信。點線箭頭109V表示應用程式←→I/O器件通信(例如,經由用於應用程式之VF而繞過),例如,具備DNA能力之應用程式及具備DNA能力之驅動程式(諸如)在無使用OS或驅動程式作為中間物之應用程式的情況下與SSD通信。
在一些實施例中,NVM 199之一或多個部分用於韌體儲存(例如,韌體106)。韌體儲存包括一或多個韌體映像(或其部分)。舉例而言,韌體映像具有(例如)由SSD控制器100之CPU核心172執行之韌體的一或多個映像。另舉例而言,韌體映像具有(例如)在韌體執行期間由CPU核心參考之常數、參數值及NVM器件資訊之一或多個映像。韌體之映像(例如)對應於當前韌體影像及零或多個先前(關於韌體更新)韌體映像。在各種實施例中,韌體提供通用、標準、ONA及/或DNA操作模式。在一些實施例中,經由視情況由驅動程式傳達及/或提供之密鑰或各種軟體技術來啟用韌體操作模式中之一或多者(例如,一或多個API經「解除鎖定」)。
在缺乏交換機/網狀架構/中間控制器之一些實施例中,SSD經由外部介面110直接耦接至主機。在各種實施例中,SSD控制器100經由一或多個中間階層之其他控制器(諸如,RAID控制器)耦接至主機。在一些實施例中,SSD 101(或其變化)對應於SAS磁碟機或SATA磁碟機且交換機/網狀架構/中間控制器103對應於轉而耦接至啟動器之擴展器,或者交換機/網狀架構/中間控制器103對應於經由擴展器間接地耦接至啟動器之橋接器。在一些實施例中,交換機/網狀架構/中間控制器103包括一或多個PCIe交換機及/或網狀架構。
在各種實施例(諸如,主機102為計算主機(例如,電腦、工作站電腦、伺服器電腦、儲存伺服器、SAN、NAS器件、DAS器件、儲存設備、PC、膝上型電腦、筆記型電腦及/或迷你筆記型電腦)的實施例中之一些)中,視情況啟用計算主機以與一或多個本端及/或遠端伺服器(例如,可選伺服器118)通信(例如,經由可選I/O及儲存器件/資源117及可選LAN/WAN 119)。該通信實現(例如)對SSD 101元件中之任何一或多者的本端及/或遠端存取、管理及/或使用。在一些實施例中,該通信係全部或部分地經由乙太網路進行。在一些實施例中,該通信係全部或部分地經由光纖通道進行。在各種實施例中,LAN/WAN 119表示一或多個區域及/或廣域網路,諸如伺服器場中之網路、耦接伺服器場之網路、都會網路及網際網路中之任何一或多者。
在各種實施例中,與一或多個NVM結合之SSD控制器及/或計算主機快閃記憶體控制器實施為非揮發儲存組件,諸如USB儲存組件、CF儲存組件、MMC儲存組件、eMMC儲存組件、霹靂儲存組件、UFS儲存組件、SD儲存組件、記憶棒儲存組件及xD圖像卡儲存組件。
在各種實施例中,SSD控制器(或計算主機快閃記憶體控制器)之全部或任何部分或其功能實施於控制器待耦接之主機(例如,圖1B之主機102)中。在各種實施例中,SSD控制器(或計算主機快閃記憶體控制器)之全部或任何部分或其功能經由硬體(例如,邏輯電路)、軟體及/或韌體(例如,驅動程式軟體或SSD控制韌體)或其任何組合而實施。舉例而言,ECC單元(諸如,類似於圖1A之ECC 161及/或ECC-X 135)之功能性或與其相關聯之功能性部分地經由主機上之軟體且部分地經由SSD控制器中之韌體與硬體之組合而實施。另舉例而言,回收器單元(諸如,類似於圖1A之回收器151)之功能性或與其相關聯之功能性部分地經由主機上之軟體且部分地經由計算主機快閃記憶體控制器中之硬體而實施。 映射操作
圖2說明映射LBA之LPN部分之實施例的選定細節。在一些實施例中,讀取單元為可獨立讀取之NVM的最精細之細微性,諸如NVM之頁面之一部分。在其他實施例中,讀取單元對應於(較低階)錯誤校正碼之檢查位元(有時稱為冗餘)以及受檢查位元保護之所有資料。舉例而言,圖1A之ECC 161經由檢查位元(諸如,經由LDPC碼)實施錯誤校正,且除受LDPC編碼位元保護之資料位元外,讀取單元亦對應於實施LDPC碼之編碼位元。
在一些實施例中,映射141(諸如)經由表143(如圖1A中所說明)將LBA 211之LPN 213部分映射至LPN 221之映射資訊。LPN之映射資訊(諸如,LPN 221之映射資訊)有時稱為映射條目。據稱映射141使LPN與對應映射條目相關聯。在各種實施例中,映射係經由一或多個相關聯查找,經由一或多個非相關聯查找及/或經由一或多種其他技術進行。
在一些實施例中,SSD控制器100維持可能及/或正在使用中之每一LPN之一個映射條目。
在一些實施例中,LPN 221之映射資訊包括各別讀取單元位址223及以讀取單元為單位之長度225。一些實施例中,(諸如)藉由將長度按照相對於跨距之位移來儲存而將長度及/或跨距按照經編碼之形式儲存,例如,於以讀取單元為單位之長度225的全部或任何部分中。在其他實施例中,第一LPN與第一映射條目相關聯,第二LPN(不同於第一LPN,但參考大小與第一LPN參考之邏輯頁面相同之邏輯頁面)與第二映射條目相關聯,且第一映射條目之以讀取單元為單位之各別長度不同於第二映射條目之以讀取單元為單位之各別長度。
在各種實施例中,在相同時間點,第一LPN與第一映射條目相關聯,第二LPN(不同於第一LPN)與第二映射條目相關聯,且第一映射條目之各別讀取單元位址與第二映射條目之各別讀取單元位址相同。在其他實施例中,與第一LPN相關聯之資料及與第二LPN相關聯之資料皆儲存於NVM 199中之相同器件的相同實體頁面中。
根據各種實施例,讀取單元位址223與以下各者中之一或多者相關聯:NVM中之起始位址;NVM中之結束位址;任何前述位址的位移;及用於識別與LPN 213相關聯之NVM之一部分的任何其他技術。
圖3說明在讀取單元位址處存取NVM以產生組織為各種讀取單元(共同地具有以讀取單元之配量來量測之長度)之讀取資料之實施例的選定細節。根據各種實施例,第一讀取單元313為以下各者中之一或多者:讀取資料311中之讀取單元中的具有NVM之位址空間中之最低位址的讀取單元;讀取單元中之固定讀取單元;讀取單元中之任意讀取單元;讀取單元中之可變讀取單元;及由任何其他技術選擇之讀取單元中之讀取單元。在各種實施例中,啟用SSD控制器100以藉由讀取不超過由以讀取單元為單位之長度225指定之數目個讀取單元而存取NVM 199且產生讀取資料311。
圖4A說明作為讀取單元401A之讀取單元(諸如,圖3之讀取單元313或315)之實施例的選定細節。在各種實施例及/或使用情形中,標頭1 411A至標頭N 419A為連續的,且由該等標頭中之每一者識別(諸如,經由各別位移)的各別資料區緊跟在該等標頭中之最後標頭之後連續。該等資料區共同地形成資料位元組421A。該等資料區係以匹配儲存標頭之位置次序的位置次序來儲存。舉例而言,考慮在讀取單元之開始處的第一標頭,其中第二標頭及第三標頭連續地緊跟在第一標頭之後。第一資料區(由第一標頭中之第一位移識別)連續地緊跟在第三標頭之後。第二資料區(由第二標頭中之第二位移識別)連續地緊跟在第一資料區之後。類似地,第三資料區(由第三標頭識別)連續地緊跟在第二資料區之後。
圖4B說明作為讀取單元401B之讀取單元(諸如,圖3之讀取單元313或315)之另一實施例的選定細節。在各種實施例及/或使用情形中,標頭標記(HM)410B為指示緊跟之連續標頭(標頭1 411B、標頭2 412B...標頭N 419B)之數目的可選初始欄位(諸如,一位元組欄位)。資料區(資料位元組421B、資料位元組422B...資料位元組429B)分別由標頭(標頭1 411B、標頭2 412B…標頭N 419B)識別且以與儲存標頭之位置次序相反的位置次序來儲存。標頭在讀取單元之開始處開始,而對應資料區在讀取單元之結束處開始。在一些實施例中,資料區內之資料位元組(例如,資料位元組421B、資料位元組422B...資料位元組429B)以前向次序(位元組次序匹配位置次序)配置,而在其他實施例中,資料位元組以反向次序(位元組次序相對於位置次序而反向)配置。在一些實施例中,標頭標記用於標頭及資料位元組以相同位置次序(例如,如圖4A中所說明)儲存之讀取單元中。
在一些實施例中,可選填補位元組431A(或431B)係根據與特定LPN相關聯之資料的細微性。舉例而言,在一些實施例中,若資料位元組421A(或共同地資料位元組421B、資料位元組422B...資料位元組429B)在儲存與標頭1 411A至標頭N 419A(或標頭1 411B、標頭2 412B...標頭N 419B)中除最後一者外之所有者相關聯的資料之後具有小於固定量(諸如,8位元組)之剩餘空間,則與最後標頭相關聯之LPN的資料在後續讀取單元中開始。在其他實施例中,在最後標頭中之特定位移值(例如,全一)指示與最後標頭相關聯之LPN的資料在後續讀取單元中開始。
圖5說明具有數個欄位之標頭(諸如,圖4A之標頭1 411A至標頭N 419A或圖4B之標頭1 411B至標頭419B中之任何標頭)之實施例的選定細節。在一些實施例中,標頭為固定長度的(例如,每一標頭之長度為相同數目個位元組)。標頭501包括以下欄位:類型511、最後指示符513、旗標515、LPN 517、長度519及位移521。根據各種實施例,標頭501包括出現時間523及/或與出現時間523相關聯及/或視情況及/或選擇性地附加有出現時間523或在前面加上出現時間523。類型欄位識別資料位元組之種類。舉例而言,類型欄位指示資料位元組之種類為主機資料(例如,邏輯頁面資料)或系統資料(例如,映射資訊或檢查點資訊)中之一者。最後欄位指示標頭為資料位元組之前的最後標頭。在具有標頭標記之一些實施例中,視情況省略最後欄位。LPN欄位為與標頭相關聯之LPN。LPN欄位實現對標頭之剖析以藉由(例如)搜尋該等標頭以尋找具有匹配特定LPN之LPN欄位的標頭來判定標頭中的與該特定LPN相關聯的特定標頭。長度欄位為資料位元組之長度(以位元組為單位)(例如,在與標頭501相關聯之資料位元組421A中存在多少資料位元組)。在一些實施例中,根據特定細微性(例如,8位元組細微性)對位移欄位中之位移進行捨位。出現時間欄位是識別相對於相同或不同串流之其他物件的一物件(標頭為該物件之一部分)之寫入次序的時間標記。
在各種實施例中,與特定LPN相關聯之一些或所有資訊儲存於與特定LPN相關聯之映射條目、與特定LPN相關聯之標頭,或該兩者中。舉例而言,在一些實施例中,長度519中之一些或全部儲存於映射條目而非標頭中。
圖6說明多個NVM器件(例如,一或多個快閃記憶體晶粒及/或快閃記憶體晶片)之區塊、頁面及讀取單元之實施例的選定細節。
每一器件(諸如,器件601、603...及609中之任一者)提供組織為區塊(諸如,器件601之區塊631、633...及639;器件603之區塊661、663...及669;等等)之儲存器。在一些實施例中,每一器件包括整數數目個區塊且區塊為最小抹除配量。該等區塊轉而包括頁面(諸如,區塊631之頁面621、623...及629;區塊661之頁面651、653...及659;等等)。在一些實施例中,每一區塊包括整數數目個頁面且頁面為最小寫入配量。該等頁面轉而包括讀取單元(諸如,頁面621之讀取單元611、613...及619;頁面651之讀取單元641、643...及649;等等)。根據各種實施例,實現以下情形中之一或多者:讀取單元為最小讀取及錯誤校正配量;每一頁面包括整數數目個讀取單元;兩個或兩個以上頁面之相關聯群組包括整數數目個讀取單元;且讀取單元視情況及/或選擇性地橫跨頁面邊界。器件中資訊之讀取及/或寫入係根據一次序(諸如,「讀取單元優先」次序或「頁面優先」次序)來執行。圖中說明之讀取單元之讀取單元優先次序的實例以讀取單元611開始,其後接著為641、...、671、613、643、...、673等,以679結束。圖中說明之讀取單元之頁面優先次序的實例以讀取單元611開始,其後接著為613、...、619、641、643、...、649、671、673等,以679結束。
在各種實施例中,快閃記憶體晶粒601、603...及609對應於圖1A之一或多個個別快閃記憶體晶粒194中之各別快閃記憶體晶粒。在一些實施例中,器件601、603...及609為小於NVM 199之全部的一部分。舉例而言,在各種實施例中,跨越多個快閃記憶體晶粒群組而獨立地使資料等量化,且可獨立存取該等快閃記憶體晶粒群組中之每一者。
在一些實施例中,各種NVM管理功能(例如,讀取、回收、抹除、程式化/寫入及/或與使用NVM相關之功能中之任何一或多者)係在有時被稱為R區塊之邏輯切片及/或區段中執行。在各種實施例中,R區塊例示為跨越(例如)快閃記憶體之各種晶粒(例如,全晶粒,全晶粒不包括全部或部分地出現故障的晶粒,及/或晶粒之一或多個選定子集)的邏輯切片或區段。舉例而言,在具有R個快閃記憶體晶粒(每一快閃記憶體晶粒具有N個區塊)之快閃記憶體中,總體而言,每一R區塊為來自快閃記憶體晶粒中之每一者的第i個區塊,總計N個R區塊。另舉例而言,在具有R個快閃記憶體晶粒(每一快閃記憶體晶粒具有N個區塊)之快閃記憶體中,每一R區塊為來自快閃記憶體晶粒中之每一者的第i個區塊及第(i+1)個區塊,總計N/2個R區塊。再舉例而言,在具有複數個雙平面器件之快閃記憶體中,每一R區塊為來自該等雙平面器件中之每一者的第i個偶數區塊及第i個奇數區塊。
預期作為R區塊以用於管理之快閃記憶體晶粒區塊之其他配置,包括在虛擬區塊位址與實體區塊位址之間映射以確保R區塊具有來自每一晶粒之一個區塊,即使一些區塊不可操作亦如此。在各種實施例中,每一快閃記憶體晶粒中之N個區塊中的一些用作備用區塊,以使得在虛擬區塊位址與實體區塊位址之間的映射具有備用(以其他方式未使用)區塊以替代R區塊中之區塊中之有缺陷區塊。
圖7說明R區塊之實施例的選定細節。該圖說明具有66個快閃記憶體晶粒(快閃記憶體晶粒710.65...710.0)之實施例。說明區塊、頁面及作為R區塊之區塊的管理。將每一快閃記憶體晶粒說明為具有N個區塊(諸如,快閃記憶體晶粒710.65之區塊710.65B0、區塊710.65B1...區塊710.65BB)。總體而言,R區塊之具體實例為每一R區塊為來自快閃記憶體晶粒中之每一者的第i個區塊,諸如,R區塊760.0為來自快閃記憶體晶粒710.65之區塊710.65B0、來自快閃記憶體晶粒710.64之區塊0(未明確地說明),等等,至快閃記憶體晶粒710.0之區塊710.0B0。因此,存在總計N個R區塊(R區塊760.0、R區塊760.1...R區塊760.R)。總體而言,R區塊之另一具體實例為每一R區塊為來自快閃記憶體晶粒中之每一者的第i個區塊及第(i+1)個區塊(例如,來自快閃記憶體晶粒710.65之區塊710.65B0及區塊710.65B1、來自快閃記憶體晶粒710.64之區塊0及1等等,至來自快閃記憶體晶粒710.0之區塊710.0B0及區塊710.0B1)。若每一快閃記憶體晶粒中存在N個區塊,則因此存在N/2個R區塊。
在成對或以其他相關聯群組將區塊視為形成R區塊之部分的各種實施例中,亦將來自區塊之相關聯群組的每一區塊之各別頁面視為諸如用於寫入之單元,從而形成較大之多區塊頁面。舉例而言,在具有偶數及奇數區塊之各種雙平面實施例中,將偶數區塊中之特定偶數區塊的第一頁面及奇數區塊中之相關聯奇數區塊的第一頁面視為用於寫入之單元,且視情況及/或選擇性地視為用於讀取之單元。類似地,將特定偶數區塊之第二頁面及相關聯奇數區塊之第二頁面視為一單元。根據各種實施例,如本文中使用之NVM之頁面指代以下各者中之一或多者:NVM之單一頁面;NVM之多區塊頁面;視情況及/或選擇性地視為用於讀取之一或多個個別頁面的用於寫入之NVM的多區塊頁面;及NVM之頁面的任何其他群組或關聯。
在一些實施例中,由於(例如)故障(例如,壞)區塊之跳過,並非所有R區塊為相同大小。舉例而言,若區塊710.0B0為有缺陷且不可用的,則R區塊760.0比R區塊760.1少一個區塊。
在一些實施例中,每一R區塊含有R區塊標頭,諸如,特定形式之標頭501,且類型欄位指定R區塊類型(而非(例如)資料類型)。在其他實施例中,R區塊標頭在R區塊中之複數個區塊中重複,諸如,在R區塊中之區塊中之每一者中的第一頁面中重複。根據各種實施例,R區塊標頭包括以下各者中之一或多者:R區塊類型;R區塊帶;R區塊序列號;先前R區塊號;及其他資訊。R區塊類型指示R區塊中所含有之資訊之類型,諸如,主機資料資訊、映射資訊或檢查點資訊。R區塊帶指定複數個帶中之哪一者包括R區塊。舉例而言,R區塊帶指定熱資料帶、冷資料帶、映射帶或檢查點帶中之一者。R區塊序列號針對所使用之每一R區塊遞增一次,且提供R區塊產生之排序。在一些使用情形中,R區塊序列號為針對每一帶的,而在其他使用情形中,R區塊序列號為全域的。先前R區塊號使該等帶中之給定帶中的R區塊能夠以反向(在時間上向後)次序連結在一起。
在一些實施例中,恢復包括(諸如,始於)判定R區塊中之每一者之R區塊標頭,且使用R區塊標頭之內容來判定該等帶中之每一者中的最後R區塊(最新近寫入之R區塊)。 自我記錄及階層一致性
自我記錄之實例為物件包括足以單獨在物件自身中恢復物件之資訊(例如,將LBA與LBA所對應之LB一起儲存)之時。階層一致性之實例為經由一資料結構之版本來判定將使用之另一資料結構之哪一版本。例如,由特定時間標記識別之資料版本優先於由特定時間標記識別之映射版本,而由特定時間標記識別之映射版本轉而優先於由特定時間標記識別之檢查點版本。在一些實施例及/使用情形中,使用自我記錄技術結合階層一致性技術實現比不使用此等技術之情況有效的映射重建及/或低延時FUA交握。
在各種實施例中,映射(自LBA至讀取單元,諸如,圖1A之映射141之全部或任一部分)為單階、雙階或多階映射,且實施為以下各者中之一或多者:表、CAM、雜湊表、搜尋樹、將密鑰(諸如,LBA)與值(諸如,讀取單元位址)相關聯之任何結構,或其任何組合。在一些實施例中,映射包括快取以保持頻繁存取之條目及/或已變更條目。映射快取實施為以下各者中之一或多者:表、CAM、雜湊表、搜尋樹、將密鑰(諸如,LBA)與值(諸如,讀取單元位址)相關聯之任何結構,或其任何組合。
在各種實施例中,寫入資料儲存為邏輯頁面、NVM之頁面、單個讀取單元或經由在與每一LBA相關聯之映射條目中儲存長度而儲存為前述各者中之一或多者。主機以LB(由LBA定址)之最精細之細微性提供寫入資料。在各種實施例中,來自主機之LB視情況及/或選擇性地壓縮,且消耗一個以下讀取單元、一個讀取單元、一個以上讀取單元、非整數數目個讀取單元或某一其他大小。
在其他實施例中,主機以比LB之細微性精細之細微性(諸如,磁區細微性)提供寫入資料。舉例而言,磁區為512 B,且每一LB包括8個連續磁區。來自具有小於LB之大小之資料大小或具有僅引起特定LB之一部分被寫入之對準的主機的寫入操作處理為讀取-修改-寫入操作。
在一些實施例中,使用讀取單元作為實例,映射將特定LBA與各別讀取單元位址及各別長度及/或跨距(諸如以讀取單元為單位)相關聯(例如,LBA 211由映射141映射至讀取單元位址223及以讀取單元為單位之長度225,如圖2所說明,其中,以讀取單元為單位之長度225將長度編碼為特定LBA之資料之大小且將跨距編碼為讀取以獲得資料之讀取單元之數目)。儲存由特定LBA參考之邏輯區塊(LB),始於由各別讀取單元位址定址的NVM中之特定讀取單元中且橫跨由各別跨距給定之數個讀取單元。舉例而言,跨距1指示LB含於特定讀取單元內。在各種實施例及/或實施方案中,特定讀取單元儲存零個其他LB、其他LB之一分數或一或多個其他LB。
特定讀取單元包括始於特定讀取單元中之一或多個LB中之每一者的標頭(例如,圖4A之標頭1 411A至標頭N 419A及圖4B之標頭1 411B、標頭2 412B...標頭N 419N)。標頭中之每一者包括儲存於特定讀取單元中之LB之各別LBA(例如,圖5之標頭501之LPN 517及/或位移521)。舉例而言,與特定LBA相關聯之標頭中之特定標頭包括特定LBA。在各種實施例中,標頭包括其他資訊,諸如:發現LB之讀取單元中之位移;LB上使用之壓縮類型之指示;如以位元組為單位儲存之LB之長度;及其他資訊。
使用在讀取單元中儲存標頭及資料之各種技術中之一或多者,諸如關於以下各者,各種實施例為預期的:資料組織及/或排序、不具有LB之開始的讀取單元中之標頭之存在(或不存在)、標頭是否指示讀取單元之開始抑或結束及標頭是否儲存於標頭分別對應之資料的第一讀取單元抑或最後讀取單元。
自我記錄屬性之實例為儲存於讀取單元中之一或多個各別LB的一或多個各別LBA之前述儲存(諸如,於讀取單元之一或多個標頭中)。自我記錄屬性實現在寫入至快閃記憶體之讀取單元之後的LBA及對應LB資料的映射資訊之恢復(例如,自標頭),此係因為讀取單元單獨實現映射資訊的恢復。
在各種實施例及/或使用情形中,使用用於恢復之各種技術(例如,回應於出乎預料之電力損耗、失靈,或中斷及/或阻止資料至NVM之儲存之其他事件)。舉例而言,藉由週期性地寫出資訊而維持檢查點以使得能夠全部或部分地自失靈恢復。在一些實施例中,檢查點具有複數個條目,每一條目將直至活動之串流中的某一點的恢復資訊提供至非揮發儲存系統(例如,SSD之NVM)。在各種實施例中,各種檢查點條目包括不同類型之資訊,諸如,在不同時間記載之不同檢查點資訊。
在一些實施例中,寫入滾動檢查點,其中多個檢查點條目各自包括一或多個資料結構之至少一部分(諸如,一階映射之一部分及/或R區塊使用計數表的全部)。滾動檢查點分散隨著時間保存檢查點資訊的成本(例如,在效能方面,在至NVM之額外寫入方面及在NVM之管理額外負擔方面)。在一些實施例中,滾動檢查點使得能夠僅鎖定在檢查點之產生期間標註檢查點之資料結構之一部分,從而保持資料結構之剩餘部分未經鎖定且因此可用於非檢查點使用。
舉例而言,在各種實施例中,檢查點條目中之至少一些(但未必全部)包括空閒R區塊之清單(以將使用空閒R區塊之次序儲存)。檢查點經寫入以使得在恢復時,(a)可在NVM中定位檢查點,(b)可判定最晚檢查點條目且(c)可按前向及/或反向時間次序重播檢查點。舉例而言,將檢查點寫入至NVM中特定位置,且以FIFO次序寫入(因此較晚條目在較早條目之後)。最終,寫入至檢查點FIFO「進行包裝」,且最早期條目被抹除及/或由較近期條目覆寫。寫入至檢查點FIFO視情況包括與時間戳記一起寫入,以使得可判定檢查點條目之各別頁面(例如,以區分FIFO中之最近期條目及最早期條目)。在各種其他實施例中,除FIFO以外之資料結構(例如,乒乓結構、表及經啟用以儲存檢查點條目之其他資料結構)用於儲存檢查點。雖然在一些實施例中,檢查點FIFO為先進先出資料結構,但在其他實施例中,藉由其他結構(諸如,佇列、串流或以預訂次序寫入之可隨機存取之結構)來實施檢查點FIFO。
在一些實施例中,資料寫入於一或多個資料串流中。隨著主機提供寫入資料,即使資料係針對不連續區域(例如,LBA之不相關之群組),寫入資料仍彙總至R區塊中。寫入資料之資料串流類似於主機寫入活動之記錄檔,此係因為資料串流記載主機寫入之資料(雖然未必如此,但在所有實施例中,以資料自主機到達之相同次序)。在各種實施例中,存在一或多個資料串流。舉例而言,在一些實施例中,回收活動(自已全部及/或部分覆寫之R區塊收回空閒空間)係針對回收資料串流,而主機寫入活動係針對與回收資料串流分開之主機資料串流。在其他實施例中,主機資料寫入至第一R區塊,且同期回收資料寫入至第二不同R區塊。在一些使用情形中,將回收(冷)資料與新寫入(熱)資料分開係有利的。在其他實施例中,主機資料中的一些(諸如,判定為冷之主機資料之一部分)選擇性地寫入至第二R區塊。
根據各種實施例,諸如回應於主機命令及/或回應於指定量之活動(例如,指定量之主機寫入資料、指定數目之映射參考及/或指定量之已變更映射資訊)而在時間上週期性地產生檢查點條目。在其他實施例中,在不同時間點及/或根據不同規則對不同結構標註檢查點。
在各種實施例中,檢查點包括一或多個資料結構中之一些或全部,諸如:一階映射、映射快取、R區塊使用表、諸如抹除計數之R區塊統計資料、諸如以R區塊為基礎或以其他基礎累積之錯誤計數或讀取干擾資訊的其他統計資料、空閒清單及用於非揮發儲存系統中之其他狀態資訊及/或表。
在一些實施例中,在恢復程序中使用全部或部分地包括於檢查點條目中之一或多者中的資料結構。在其他實施例中,諸如藉由滾動檢查點,多個檢查點條目用於恢復資料結構,諸如,一階映射。
在一個實例中,在恢復時,檢查點FIFO用於尋找檢查點FIFO之檢查點之條目中所保存的空閒R區塊之一或多個清單中的最晚清單。接著,讀取空閒R區塊之最晚清單中之R區塊,以發現已使用R區塊中之哪一者(其為可判定的,此係因為所使用之R區塊並不處於抹除狀態)。在一些使用情形中,在失靈之前,寫入R區塊之一分數,且寫入之R區塊之分數為可恢復的。掃描空閒R區塊之最晚清單中之R區塊中的讀取單元,以在讀取單元中尋找任何標頭。該等標頭包括指示讀取單元中所儲存之LB的LBA。檢查映射(其使得能夠判定LBA之資料儲存於NVM中何處)以判定任何該等LBA是否自映射遺漏。例如,LBA中之一者之映射的條目是否參考比發現LBA之讀取單元早期的讀取單元。若映射過期,則更新該映射。在一些使用情形中,在第一讀取單元且接著在第二讀取單元中發現相同LBA,例如,在LBA在檢查點週期期間被寫入一次以上時。因此,在此實例中,在恢復期間,在概念上按次序處理資料讀取單元,且在一些情況下,若在讀取單元中之標頭中發現相同LBA一次以上,則在恢復期間更新映射中之相同條目一次以上。在另一實例中,在概念上向後(而非按次序,例如,前向)處理資料讀取單元且捨棄至相同LBA之重複寫入。
各種技術用於將寫入至NVM之映射與寫入資料同步。該等技術中之一些適用於具有單階映射之實施例,而該等技術中之其他適用於具有雙階或多階映射之實施例。
在一些實施例中,藉由將該映射中之一些或全部寫入至檢查點條目來週期性地對該映射標註檢查點。在一些實施例中,整個映射寫入至檢查點FIFO。在其他實施例中,該映射寫入至NVM中之特定乒乓位置(且視情況與時間戳記一起寫入)。在其他實施例中,指示該映射寫入於該NVM中何處的該NVM中之位址寫入至檢查點FIFO。在其他實施例中,每次一部分地對該映射標註檢查點,以使得跨越多個檢查點條目而對整個映射標註檢查點(例如,滾動檢查點)。在一些使用情形中,每次一部分地對該映射標註檢查點實現對一些命令(諸如,熱寫入命令)之延時的降低之上限。
在一些實施例中,為了解決任何一致性問題,強加階層一致性寫入排序以確保一致性,例如,寫入資料始終在對應經更新之映射條目寫入至NVM之前寫入至NVM。舉例而言,在一些實施例中,僅在寫入資料提交至NVM後更新映射條目,且寫入資料包括記載與寫入資料相關聯之LBA的標頭。在此期間,對映射之未決更新保持於另一結構(諸如,映射快取)中。在一些實施例中,映射快取包括映射快取中之每一條目之資訊,其指示該條目「未決」(例如,等待寫入資料至NVM之寫入完成)。藉由延遲更新被標註檢查點之映射之版本直至寫入資料已寫入至NVM,映射之檢查點始終比寫入資料早期,且映射與寫入資料之間的一致性得以良好定義,此係因為來自寫入資料標頭之LBA映射資訊優先於來自映射之任何衝突(較早期)資訊。
藉由使用階層一致性寫入排序,映射(如NVM中所儲存且在恢復時復原)始終僅包括早於來自資料讀取單元之資訊的資訊。所恢復之映射始終比來自所恢復之資料讀取單元之任何資料早期,且所恢復之資料讀取單元中之標頭(如例如自檢查點FIFO中之空閒R區塊之清單所判定)用於更新該映射。
在一些雙階映射實施例中,二階映射條目週期性地儲存於NVM中。二階映射頁面(其包括多個二階映射條目)包括映射標頭,其包括一階映射索引,且與一階映射索引相關聯之FLM之條目指向二階映射頁面。一階映射索引提供二階映射頁面之自我記錄屬性。階層一致性寫入排序延伸,以使得寫入資料首先寫入至NVM,含有與寫入資料相關聯之二階映射條目中之特定二階映射條目的二階映射頁面僅在寫入資料之寫入完成後寫入至NVM,且指向二階映射頁面之一階映射條目僅在二階映射頁面寫入完成後更新(以參考二階映射頁面之經更新之位置)。空閒R區塊之清單視情況及/或選擇性地包括用於儲存二階映射條目以及寫入資料之R區塊。在一些實施例中,空閒R區塊之一個清單用於二階映射條目,且空閒R區塊之另一清單用於資料,且R區塊在兩個條目之間隔離。兩個清單使得能夠自二階映射頁面中之標頭恢復一階映射,此類似於自資料讀取單元恢復單階映射。因此,一階映射之檢查點始終比所復原之二階映射頁面早期(且一階映射使用所復原之二階映射頁面中之標頭來更新)。類似地,二階映射頁面比寫入資料早期,且二階映射頁面使用所復原之資料讀取單元中之標頭來更新。
在一些實施例(諸如,具有滾動檢查點之一些實施例)中,額外日誌標頭添加至資料讀取單元及/或映射讀取單元以記載檢查點事件。日誌標頭包括記載事件之資訊,且該資訊用於輔助恢復。舉例而言,日誌標頭寫入至資料讀取單元以指示映射之一部分一致(例如,已標註檢查點)直至資料串流中之彼點。
在一些實施例中,日誌標頭指示恢復程序將在資料串流中往回多遠開始。舉例而言,藉由滾動檢查點,且在具有省略一或多個資料結構之檢查點資訊之一些檢查點條目的其他實施例中,恢復開始使用對應於所有資料結構完全標註檢查點的最晚時間點之資訊進行處理。舉例而言,若映射跨越N個檢查點條目在N段中標註檢查點,則恢復始於資料頁面中對應於最晚時間之位置(稱為「最遠往回點」),在該最晚時間之後,映射之所有N段被標註檢查點。
在一些實施例中,日誌標頭指示在某一點一致之資料結構之一部分。繼續上述映射恢復實例,在最遠往回點處,映射之N段中之第一段已標註檢查點(且根據最遠往回點之定義,並非在資料串流中之較晚時間標註檢查點)。在該映射之第一段之後且影響該映射之第一段的所有更新應用於該映射。然而,該映射之其他段僅在遭遇指示資料串流中之後續資料尚未記載於檢查點中的對應日誌標頭之後更新。
在一些實施例中,藉由時間戳記及/或序列號來判定階層一致資料及/或資料結構之時間排序。亦即,判定寫入資料是否在對應經更新之映射條目之後抑或之前寫入至NVM係藉由時間戳記及/或序列號之比較來進行。時間戳記及/或序列號視情況及/或選擇性地在(例如)保持寫入/回收資料、映射資訊及/或檢查點條目之各別串流中輸出,以提供相對於執行至NVM之實體寫入之次序不變的串流間之更新之次序的規格。在其他實施例中,時間戳記及/或序列號在串流中作為稱為出現時間標頭之特殊類型之標頭而輸出。每一出現時間標頭包括稱為出現時間(例如,圖5之出現時間523)之當前時間戳記及/或序列號。
在各種實施例中,出現時間隨每一資料寫入前進及/或遞增,且獨特地判定已進行資料寫入之次序。在其他實施例中,由資料寫入中之特定資料寫入產生之資料結構更新被指派特定資料寫入之出現時間。在資料結構更新與特定資料寫入之出現時間一起寫入至串流時,自指定特定資料寫入之出現時間及資料結構更新之出現時間的各別出現時間標頭判定特定資料寫入及資料結構更新之排序,此獨立於特定資料寫入及資料結構更新寫入至NVM之次序。
根據各種實施例,出現時間標頭進行以下各者中之一或多者:針對每一資料寫入輸出一次;僅隨一些資料寫入輸出;在資料串流中週期性地輸出;針對NVM之每一頁面輸出至少一次;及針對每一帶交換輸出至少一次。在具有單個資料帶之第一實例中,出現時間標頭針對以資料串流之資料寫入的NVM之每一頁面輸出至少一次。在資料串流之每一頁面中提供出現時間標頭使得能夠在無需讀取多個頁面之情況下判定頁面中之資料之出現時間。在具有多個資料帶(諸如,熱帶及冷帶)之第二實例中,出現時間標頭針對無關於帶而寫入之NVM之每一頁面輸出至少一次,且另外每當前一資料寫入係寫入至不同於當前資料寫入之帶中之一者(稱為帶交換)時輸出。針對每一帶交換提供出現時間標頭至少一次使得能夠判定每一資料寫入之出現時間,即使並非所有資料寫入具有各別出現時間標頭亦如此。此外,針對每一帶交換提供出現時間標頭至少一次使得能夠藉由提供兩個或兩個以上帶(諸如,熱帶及冷帶)之間的寫入之一致排序而將該等帶處理為單個串流。
在一些實施例中,存在複數個出現時間序列。在第一實例中,獨立出現時間序列用於新寫入資料與回收資料。取決於相關聯之資料寫入,資料結構更新被指派來自出現時間序列中之一或多者的出現時間。在第二實例中,至NVM之資料寫入以第一出現時間(例如,來自第一出現時間序列)標註時間戳記,且至NVM之二階映射寫入以第二出現時間(例如,來自第二出現時間序列)標註時間戳記。對二階映射之更新被指派對應於相關聯之資料寫入之第一出現時間值,且對一階映射之更新被指派對應於相關聯之二階映射寫入之第二出現時間值。映射串流視情況及/或選擇性地具有兩種類型之出現時間標頭,一種針對第一出現時間值,且一種針對第二出現時間值。
雖然前述內容描述映射之恢復,但其他資料結構可類似地使用自我記錄及階層一致性來恢復。舉例而言,R區塊使用計數表可類似地標註檢查點及恢復。在一些實施例中,R區塊使用計數包括每一R區塊中之作用(未覆寫)LB之數目之計數。
自我記錄及階層一致性屬性亦適用於快取之(部分)資料結構。舉例而言,映射快取包括映射之已變更條目。在一些實施例中,映射快取條目中之每一者對應於複數個二階映射頁面中之一者,二階映射頁面中之每一者包括複數個二階映射條目,且若映射快取條目中之特定映射快取條目中之任何二階映射條目已變更,則該特定映射快取條目已變更。映射快取根據階層一致性週期性地記載於檢查點條目中(全部、以滾動檢查點方式或藉由週期性地清除映射快取之已變更條目)。在一些實施例中,每一映射條目地遵循階層一致性。繼續該實例,在映射快取之一部分保存於檢查點條目中時,僅對應於完成之寫入資料的映射條目(例如,已(諸如)藉由提交至NVM而非揮發地儲存的寫入資料)被標註檢查點。例如,若已更新映射快取中之條目且尚未非揮發地儲存對應資料,則推遲經更新之映射條目之檢查點標註,直至非揮發地儲存對應資料。
在一些實施例中,映射快取包括每一條目兩個讀取單元位址,例如,階層一致讀取單元位址及未決讀取單元位址。使至非揮發儲存系統之讀取存取能夠使用未決讀取單元位址以定位最晚資料(例如,由解決擱置至NVM之寫入之讀取單元存取的資料快取記憶體中所儲存之資料)。然而,啟用檢查點操作以使用階層一致讀取單元位址。在寫入資料寫入至NVM時,所影響之映射快取條目中之對應未決位址複製至階層一致位址(且接著可用於檢查點標註)。
在各種實施例中,映射快取之複數個條目中之每一者對應於複數個二階映射頁面中之一者,二階映射頁面中之每一者包括複數個二階映射條目,且若映射快取條目中之特定映射快取條目中之任何二階映射條目已變更,則該特定映射快取條目已變更。根據各種實施例,映射快取之已變更條目中之每一者為以下各者中之一或多者:與指定已變更條目之最早期更新之出現時間的時間戳記相關聯;與指定已變更條目之最新更新之出現時間的時間戳記相關聯;及與當前資料寫入之出現時間相關聯。在一些實施例中,在指定已變更條目之最早期更新之出現時間的相關聯之時間戳記大於當前資料寫入之出現時間之後的所判定之量之前,清除已變更條目中之每一者。在一些實施例中,具有已變更條目中之所清除之已變更條目的NVM中所儲存之時間戳記為與所清除之已變更條目相關聯之時間戳記中的任何一或多者。
(諸如)使用獨立階層一致且未決之映射快取,其他方案係可能的,諸如,其中未決映射快取中之條目隨著條目寫入至NVM而複製至階層一致映射快取。
在一些實施例中,諸如用於動態地映射LBA(亦即,在LBA正寫入時)的動態結構(諸如映射快取)僅以標註檢查點之形式存在於NVM中。例如,不同於映射自身,該等結構不具有永久儲存。舉例而言,在一些實施例中,僅對映射快取中之已變更條目標註檢查點,且若映射快取不具有已變更條目歷時延長之時段(且檢查點FIFO已包裝),則不存在映射快取之檢查點。因為動態結構存在於檢查點中(必要時),所以在失靈之後的恢復期間,亦可重建構動態結構。 特定實施例
各種特定實施例實施適用於非揮發儲存系統中之自我記錄及階層一致性及/或與非揮發儲存系統中之自我記錄及階層一致性相關之一或多種技術。經由至映射串流及檢查點串流之寫入與對一或多個資料串流之主機及回收資料寫入而管理雙階映射方案。雙階映射方案之FLM及SLM元素之復原使用來自檢查點串流之資訊,繼之以來自映射串流之資訊,且接著繼之以來自資料串流之資訊。在復原期間,資料串流優先於映射串流,且映射串流優先於檢查點串流。
圖8按照LBA至NVM位置映射800說明經由雙階映射將LBA映射至NVM中所儲存之LB之實施例的選定細節,該雙階映射具有一FLM及一或多個SLM頁面。雙階映射經由耦接至一或多個二階元素(概念性地說明為單元素SLM頁面820)之一階元素(FLM 810)來實施。FLM包括複數個條目(SLM頁面/長度810.1...SLM頁面/長度810.M)。FLM之條目中之每一者指向SLM頁面(諸如SLM頁面820)中之一者。SLM頁面包括複數個條目(LB頁面/長度820.1...LB頁面/長度820.N)。SLM頁面之條目中之每一者指向NVM中資料開始之位置(例如,儲存至少LBA之主機寫入資料之開始的讀取單元)。除法器(整數除法器822)自(例如)可程式化硬體暫存器(SLM條目/SLM頁面(CSR)823)接收參數以對傳入LBA進行除法運算以判定選擇哪一FLM條目及選擇哪一SLM條目(在選定之FLM條目所指向之SLM頁面內)。除法器耦接至FLM及SLM頁面。
在各種實施例中,該圖說明圖1A之映射141及/或表143之選定細節或與圖1A之映射141及/或表143相關之選定細節。舉例而言,在一些實施例中,映射141及/或表143實施諸如FLM之一或多個條目及/或SLM之一或多個條目的映射資訊之一或多個快取。FLM及/或SLM之整個映像維持於NVM(例如,圖1A之NVM 199)之一部分中,(例如)在快取替換先前快取之FLM及/或SLM條目時更新。在一些實施例中,FLM及/或SLM條目映像經由滾動或乒乓檢查點來實施,該等檢查點中之每一者為各別整個映射映像之一部分。
在操作中,LBA 821呈現給整數除法器822。除法器將LBA除以如由SLM條目/SLM頁面(CSR)823提供的每SLM頁面之SLM條目之數目,從而產生商(FLM索引822Q)及餘數(SLM頁面索引822R)。商用以選擇FLM條目中之一者,且選定FLM條目之頁面欄位被讀取(SLM指標810S)。頁面欄位用以選擇SLM頁面中之一者(例如,SLM頁面820),且餘數用以(例如,作為位移)選擇選定SLM頁面之條目。選定SLM頁面條目之頁面欄位用以選擇NVM中之特定位置,諸如,特定讀取單元,其中至少儲存了對應於所呈現之LBA之開始(LB指標820L)。在各種實施例中,LB指標包括NVM之讀取單元之位址(例如,圖2之讀取單元位址223)。在一些實施例中,SLM條目中之每一者包括一長度欄位(例如,對大小及/或跨距編碼),該長度欄位指示讀取以獲得LB之所有資料之讀取單元之數目及/或於何處LB之讀取單元資料開始(例如,圖2之以讀取單元為單位之長度225)。在一些實施例中,FLM條目中之每一者包括一長度欄位(例如,對大小及/或跨距編碼),該長度欄位指示讀取以獲得由FLM條目之頁面欄位指定之各別SLM頁面的所有資料之讀取單元之數目(例如,圖2之以讀取單元為單位之長度225)。
在各種實施例中,商用作存取諸如SLM頁面之全相關聯快取之快取的密鑰。若針對特定SLM頁面在快取中存在命中,則在快取中尋找到特定SLM頁面之最晚複本,而無需存取NVM。在一些實施例及/或使用情形中,提供對複數個SLM頁面之快速存取實現對NVM之連續資料存取之複數個獨立串流(例如,穿插以對LBA之第二區域之連續資料存取之第二串流的對LBA之第一區域之連續資料存取的第二串流)的較有效處理。
圖9按照資料、映射及檢查點寫入處理900說明自主機接收資料並將其寫入至NVM之各種實施例的選定細節,包括寫入SLM及FLM資訊及各種形式之自我記錄與時間戳記記載。該處理亦適用於源自回收操作之資料。該處理概念上具有兩個部分,第一部分與適當主機(或回收)資料相關(接收並寫入資料910),且第二部分與映射該資料相關(產生並寫入映射條目920)。此外,所說明之操作中之選定操作經受檢查點標註(對元素標註檢查點995)。
處理開始(開始901)於主機寫入命令之接收(或回收操作資料產生)。接著,獲得主機(或回收)資料(自主機接收資料911)。接著(諸如)經由壓縮、編碼、填補及/或各種格式化操作而變換資料以寫入至NVM(將資料格式化912)。隨後,(諸如)經由指示資料對應於哪一LBA之標頭而將自我記錄資訊插入於資料中(自我記錄資料913)。在一些實施例中,標頭包括長度及/或位移及/或其他資訊,諸如圖5所說明之資訊。接著,(諸如)經由標頭中之出現時間欄位將時間標記插入於資料中(對資料標註時間戳記914)。在各種實施例中,將時間標頭作為特定類型之標頭插入。隨後,將資料、標頭及時間標記與其他主機(或回收)資料及標頭資訊彙總(緩衝資料915)。在已彙總足夠資訊時,將所彙總之資訊寫入至NVM(將資料寫入至NVM 916)。
資料之格式化(將資料格式化912)提供部分用於產生映射條目之資訊,始於指向NVM中寫入資料之位置的雙階映射之二階(諸如,寫入單元位置及以讀取單元為單位之長度)(產生資料之SLM條目922)。在一些實施例中,部分藉由判定資料寫入於NVM中何處(如緩衝資料915所判定)來提供用以產生映射條目之其他資訊。接著,(諸如)經由提供對應於SLM條目之FLM索引之標頭而將自我記錄資訊插入於條目中(自我記錄SLM條目923)。在一些實施例中,標頭包括長度、位移及/或其他資訊,諸如圖5所說明之資訊。隨後,(諸如)經由標頭中之出現時間欄位將時間標記插入於條目中(對SLM條目標註時間戳記924)。在各種實施例中,將時間標頭作為特定類型之標頭插入。接著,將資料、標頭及時間標記與其他SLM條目及標頭資訊彙總(緩衝SLM條目925)。在已彙總足夠資訊時,將所彙總之資訊寫入至NVM(將SLM條目寫入至NVM 926)。在一些實施例中,SLM資訊之彙總至少部分經由一或多個快取而進行。
SLM條目之產生(產生資料之SLM條目922)藉由產生指向SLM條目之FLM條目(產生SLM條目之FLM條目932)而提供部分用於完成映射條目之產生的資訊。類似於SLM條目,存在自我記錄及時間標記插入(自我記錄FLM條目933及對FLM條目標註時間戳記934),繼之以緩衝及寫入至NVM(緩衝FLM條目935及將FLM條目寫入至NVM 936)。在將資料、SLM條目及FLM條目寫入至NVM(將資料寫入至NVM 916、將SLM條目寫入至NVM 926及將FLM條目寫入至NVM 936)之後,結束處理(結束999)。
在一些實施例中,將SLM條目組織為SLM頁面,且快取SLM頁面(例如,於快取記憶體中),從而在將SLM頁面寫入至NVM(自我記錄SLM條目923至將SLM條目寫入至NVM 926)之前實現SLM頁面之條目之多個更新(產生資料之SLM條目922)。使SLM頁面中之經快取SLM頁面中之每一者能夠累積來自一或多個資料寫入之更新,且視情況及/或選擇性地直至各別經快取SLM頁面自快取記憶體清除方寫入至NVM。根據各種實施例,寫入至具有經快取SLM頁面中之經清除SLM頁面的NVM之時間標記為以下各者中之至少一者:對應於影響經清除SLM頁面中之條目的最晚資料寫入的時間標記;對應於自快取起影響經清除SLM頁面中之條目的最早資料寫入的時間標記;對應於當前資料寫入之時間標記;及對應於映射串流之時間標記。
在一些實施例中,將FLM條目作為滾動檢查點之一部分以多個部分寫入至NVM,從而在將FLM之部分寫入至NVM(自我記錄FLM條目933至將FLM條目寫入至NVM 936)之前實現FLM之部分之條目的多個更新(產生SLM條目之FLM條目932)。使FLM之部分中之每一者能夠累積來自一或多個SLM條目之更新,且視情況及/或選擇性地直至形成FLM之部分之檢查點方寫入至NVM(例如,作為滾動檢查點之一部分)。根據各種實施例,寫入至具有FLM之部分中之一者的NVM之時間標記為以下各者中之至少一者:對應於影響FLM之部分中之條目的最晚資料寫入的時間標記;對應於自最後對FLM之部分標註檢查點起影響FLM之部分中之條目的最早資料寫入的時間標記;對應於當前資料寫入之時間標記;及對應於映射串流之時間標記,諸如具有FLM之部分中之對應更新的SLM條目之映射串流中之時間標記。
在各種實施例中,(例如)經由標頭插入之自我記錄資訊包括於標頭中,如圖4A、圖4B及圖5所說明。在一些實施例中,FLM資訊之彙總至少部分經由一或多個快取獨立於SLM資訊之快取(若存在)進行,或者結合SLM資訊之快取進行。
在各種實施例及使用情形中,自接收至寫入至NVM(將資料格式化912至將資料寫入至NVM 916)之資料處理獨立於自產生至寫入至NVM(產生資料之SLM條目922至將SLM條目寫入至NVM 926及/或產生SLM條目之FLM條目932至將FLM條目寫入至NVM 936)之映射處理進行。此外,在各種實施例及使用情形中,自產生至寫入至NVM(分別為產生資料之SLM條目922至將SLM條目寫入至NVM 926及產生SLM條目之FLM條目932至將FLM條目寫入至NVM 936)之SLM及FLM處理彼此獨立進行。資料、SLM及FLM處理全部或部分地彼此並列發生,單獨受與SLM條目之產生(將資料格式化912至產生資料之SLM條目922)及FLM條目之產生(產生資料之SLM條目922至產生SLM條目之FLM條目932)相關之相依性限制。
在各種實施例中,除寫入資料之間的處理(接收並寫入資料910)及映射條目之處理(產生並寫入映射條目920之SLM及FLM相關部分)獨立(且,因此全部或部分地並列或重疊)之外,910及920之SLM及FLM相關部分中之每一者內的處理全部或部分地並列、重疊及/或管線化。舉例而言,接收第一主機資料(自主機接收資料911),且在對第一主機資料格式化(將資料格式化912)的同時,並列接收第二主機資料(自主機接收資料911)。另舉例而言,產生第一SLM條目(產生資料之SLM條目922),且接著在自我記錄第一SLM條目(自我記錄SLM條目923)的同時,並列產生第二SLM條目(產生資料之SLM條目922)。此外,第一SLM條目之FLM條目與第二SLM條目之產生(及第一SLM條目之自我記錄)並列產生(產生SLM條目之FLM條目932)。
在一些實施例中,使較晚操作能夠比在較晚操作之前開始之操作完成得早。在第一實例中,未指定至兩個不同帶之資料寫入寫入至NVM之次序。在第二實例中,SLM頁面之快取使來自較晚資料寫入之對SLM條目之更新能夠在來自早於較晚資料寫入之資料寫入的對SLM條目之更新之前寫入至NVM。
在各種實施例中,時間標記之插入為選擇性的、可選的及/或被省略(例如,對資料標註時間戳記914、對SLM條目標註時間戳記924及對FLM條目標註時間戳記934中之一或多者被省略,或僅選擇性地插入)。此外,映射資訊之寫入被延遲直至完成資料資訊之寫入(或回應於完成資料資訊之寫入而執行)。舉例而言,將SLM條目資訊記載至NVM等待將資料寫入至NVM之完成(例如,將SLM條目寫入至NVM 926取決於將資料寫入至NVM 916,如完成916C所指示)。繼續該實例,將FLM條目資訊記載於NVM中等待將SLM資訊寫入至NVM之完成(例如,將FLM條目寫入至NVM 936取決於將SLM條目寫入至NVM 926,如完成926C所指示)。恢復處理使用寫入至NVM之所有FLM資訊以及寫入至NVM之所有SLM資訊,此係因為直至已預先寫入FLM及SLM資訊所指向之資料資訊方寫入FLM及SLM資訊。因此,NVM上之資料及映射資訊彼此一致。
在一些實施例中,選擇性地插入時間標記。舉例而言,替代針對NVM之相同頁面中所儲存之連續資料寫入而在相同頁面中插入連續時間標記,僅插入時間標記中之第一時間標記。時間標記中之後續時間標記之值係自第一時間標記之值及介入之連續資料寫入之數目推斷。
在各種實施例中,插入時間標記,從而使得能夠彼此獨立地(諸如,彼此全部或部分地並列或無序)寫入資料、SLM及FLM資訊。在一些實施例及/或使用情形中,獨立寫入實現比相依寫入有效之處理(例如,較低延時及/或較高頻寬)(例如,如由完成916C及完成926C在概念上說明)。
在具體操作情形中,資料寫入係寫入至NVM之資料串流(例如,將資料寫入至NVM 916係寫入至資料串流),且映射寫入係寫入至NVM之映射串流及/或檢查點串流(例如,將SLM條目寫入至NVM 926及將FLM條目寫入至NVM 936係分別寫入至映射串流及檢查點串流)。資料寫入中之一或多者被延遲(諸如,歸因於等待與寫入資料串流衝突之抹除操作之完成)。同時,映射串流寫入中之至少一者全部或部分地與抹除操作並列地發生,以使得對應於經延遲之寫入資料中之至少一些的至少一個映射條目之寫入係在寫入經延遲之寫入資料之前完成。隨後,完成抹除操作且接著完成經延遲之資料寫入。若在完成經延遲之資料寫入之前存在失靈,則後續恢復將基於資料及映射串流中之時間標記之檢查來判定將忽略對應於經延遲之資料寫入之任何映射串流寫入。具體而言,對應於經延遲之寫入之映射串流寫入的時間標記將比資料串流寫入中之最晚(最新近或最近期)者靠前(例如,新近或近期)。
在各種實施例中,映射資訊之自我記錄之插入為可選的及/或被忽略(例如,自我記錄SLM條目923及自我記錄FLM條目933中之一或多者被忽略)。
在各種實施例及/或使用情形中,該圖之元素中之一或多者經受檢查點標註(對元素標註檢查點995)。將檢查點在各種時間點寫入至NVM,以在一些情形中實現較有效及/或強健之恢復處理。舉例而言,所彙總之資料、SLM資訊及FLM資訊(緩衝資料915、緩衝SLM條目925及緩衝FLM條目935)中之一或多者包括於檢查點中。在各種實施例中,恢復處理使用檢查點中所包括之時間標記以判定是否忽略檢查點之某些部分。舉例而言,若資料串流之最晚部分(對應於緩衝資料915)不具有晚於檢查點之最晚SLM部分(對應於將SLM條目寫入至NVM 926)之時間標記,則在恢復處理期間捨棄檢查點之最晚SLM部分。
圖10說明將主機資料及/或回收資料、映射資訊及檢查點FIFO部分串流傳輸至NVM之各種實施例的選定細節。說明對應於管理為串流之各別資料、映射及檢查點帶的R區塊之三個串流,一個用於資料寫入(資料R區塊1020),一個用於經更新之SLM寫入(SLM(映射)R區塊1030)且一個用於資料結構檢查點寫入(諸如,FLM之部分)(檢查點FIFO R區塊1040)。「出現時間」元素對應於時間標記,例如,各別標頭中之時間戳記(諸如圖5之出現時間523所說明之時間戳記)。在圖10中,根據每一各別串流次序,時間自左至右為最不新近至最新近。此外,該圖亦表示每一串流內之寫入次序,經受寫入NVM之細微性(諸如,NVM之頁面)之限制。具有NVM之頁面中之一者的元素概念上以所展示之次序寫入,即使同時實體上寫入亦如此。因此,資料R區塊之元素以如下次序寫入:出現時間-1 1021E(最不新近)、資料-1 1021、出現時間-2 1022E、資料-2 1022、出現時間-3 1023E及資料-3 1023(最新近)。映射R區塊之元素以如下次序寫入:出現時間-1 1031E(最不新近)、SLM-1 1031、出現時間-2 1032E、SLM-2 1032、出現時間-3 1033E及SLM-3 1033(最新近)。檢查點映射R區塊之元素以如下次序寫入:出現時間-1 1041E(最不新近)、FLM-1 1041、出現時間-2 1042E、FLM-2 1042、出現時間-3 1043E及FLM-3 1043(最新近)。
資料R區塊中之資訊具有精確連貫性,此係因為資料R區塊中之資訊判定何物已有效儲存於NVM中。精確連貫性指資料結構(包括寫入至NVM之資料)之屬性,其實現自寫入至NVM之資料結構之最晚部分的資料結構之有效狀態之完整恢復。精確連貫性與多個資料結構間之一致性相區分。舉例而言,兩個資料結構各自具有精確連貫性,但彼此不一致,此係因為該等資料結構中之一者反映不存在於另一資料結構中之狀態改變。在一些實施例及/或使用情形中,恢復之目標為將亦彼此一致之資料結構之精確連貫版本判定為呈最晚的可能時間。
映射R區塊中之資訊為經更新之SLM頁面之類FIFO串流,且用於將SLM之精確一致性維持為至少部分儲存於映射R區塊中。在一些情形下,映射R區塊中之資訊與寫入至NVM之資料不一致,此(諸如)歸因於與資料R區塊中之資訊不一致之SLM頁面,例如,歸因於比資料R區塊中之對應資訊新近的SLM頁面。
檢查點R區塊中之資訊為FLM之部分或全部及其他資料結構之FIFO(或串流)且用於維持FLM之精確連貫性及其他資料結構之精確或近似連貫性。然而,類似於映射R區塊,在一些情形下,檢查點R區塊中之資訊與其他R區塊中之資訊不一致,諸如,比映射或資料R區塊中之對應資訊新近的FLM條目。
在一些實施例及/或使用情形中,檢查點FIFO中所儲存之一些資料結構僅與其他資料結構近似連貫或不一致。在第一實例中,針對NVM中之每一區塊維持讀取干擾計數,且在複數個部分中在檢查點FIFO中對讀取干擾計數標註檢查點,例如,每次對四分之一的讀取干擾計數進行,隨著時間而均勻地展開。在恢復讀取干擾計數時,所恢復之讀取干擾計數與曾使用之讀取干擾計數之任何版本不連貫,此係因為四個部分中之每一者係來自不同時間點。在第二實例中,在檢查點FIFO中對R區塊使用資訊標註檢查點,但無需對應時間戳記。在恢復時復原之R區塊使用資訊之最晚版本係連貫的,但在一些情形下,與其他資料結構不一致。
概念上,該圖表示在恢復操作期間的串流優先級。R區塊之資料串流中之資訊優先於R區塊之映射串流中之資訊,而R區塊之映射串流中之資訊轉而優先於R區塊之檢查點串流中之資訊。因為串流之間的寫入未良好排序(而在其他實施例及/或使用情形中,串流中之每一者內的寫入良好排序),所以需要額外資訊以判定串流之間的寫入之一致排序。在各種實施例及/或使用情形中,時間戳記及/或時間標記(諸如,出現時間值)使得能夠判定至複數個帶及/或串流之寫入之相對次序。
如所說明,至R區塊之資料、映射及檢查點串流之寫入彼此一致,如下所述。資料寫入中之每一者優先於對應於各別資料寫入之各別SLM更新,且轉而,SLM更新中之每一者優先於包括指向各別SLM更新之指標(例如,作為FLM條目)的任何各別檢查點寫入。具體言之,SLM-1 1031映射至資料-1 1021,且資料-1 1021之寫入在出現時間-1 1031E及SLM-1 1031之寫入開始之前完成。此外,FLM-1 1041包括指向SLM-1 1031之指標,且SLM-1 1031之寫入在出現時間-1 1041E及FLM-1 1041之寫入開始之前完成。類似相依性及寫入排序適用於資料-2 1022、出現時間-2 1032E及SLM-2 1032,及出現時間-2 1042E及FLM-2 1042,以及資料-3 1023、出現時間-3 1033E及SLM-3 1033,及出現時間-3 1043E及FLM-3 1043。
在一些實施例中,R區塊之串流之間的一致性由出現時間值指示,如下所述。出現時間-1 1031E與出現時間-1 1021E相同,或者指示出現時間-1 1031E在出現時間-1 1021E之後寫入。出現時間-1 1041E與出現時間-1 1031E相同,或者指示出現時間-1 1041E在出現時間-1 1031E之後寫入。類似地,出現時間-2 1032E與出現時間-2 1022E相同(或指示出現時間-2 1032E在出現時間-2 1022E之後寫入),且出現時間-2 1042E與出現時間-2 1032E相同(或指示出現時間-2 1042E在出現時間-2 1032E之後寫入)。類似地,出現時間-3 1033E與出現時間-3 1023E相同(或指示出現時間-3 1033E在出現時間-3 1023E之後寫入),且出現時間-3 1043E與出現時間-3 1033E相同(或指示出現時間-3 1043E在出現時間-3 1033E之後寫入)。
在各種實施例及/或使用情形中,每一串流內之寫入次序保持為所說明之情況。然而,R區塊之串流之間的寫入之相對時序不同於所說明之區塊。舉例而言,出現時間-2 1032E及SLM-2 1032之寫入在資料-2 1022之寫入開始之前(但在資料-1 1021之寫入完成之後)完成。因此,SLM-2 1032臨時與資料-2 1022不一致,如指示早期於出現時間-2 1032E所指示之時代的時代的R區塊之資料串流的最新近寫入之時間標記(出現時間-1 1021E)所指示。若在出現時間-2 1022E及資料-2 1022之寫入完成之前出現失靈,則SLM-2 1032之臨時不一致性變為永久不一致性。為解決不一致性,後續恢復處理將捨棄SLM-2 1032(基於出現時間-2 1032E比出現時間-1 1021E新近)。另舉例而言,若在R區塊之映射串流中寫入對應SLM更新之前在R區塊之檢查點串流中寫入FLM條目繼之以失靈及後續恢復處理(在寫入對應SLM更新之前),則恢復處理捨棄FLM條目。
該圖將檢查點R區塊之串流之區域說明為對應於FLM之所有條目(完成FLM 1050)。該區域對應於以多個部分(例如,厚塊)對FLM標註檢查點的一些實施例。如所說明,三個視情況及/或選擇性地重疊之部分(FLM-1 1041、FLM-2 1042及FLM-3 1043)共同形成FLM之所有條目之檢查點,但該等部分中之每一者係來自不同時間,且因此自身並非FLM之連貫映像。啟用恢復程序以自FLM及其他資料結構之檢查點復原FLM之連貫且一致之版本。類似地,啟用恢復程序以自映射串流中之映射及其他資料結構的可能不連貫之複本復原映射之連貫且一致之版本。
在一些實施例中,部分藉由確保對特定資料結構之數個相關更新及特定資料結構之後續時間戳記標註至少相對於特定資料結構之檢查點作為原子單元執行,來維持特定資料結構之一致性。舉例而言,考慮在檢查點FIFO中標註檢查點的R區塊使用計數資料結構。資料串流中之資料寫入中之特定資料寫入與資料串流中之對應出現時間值相關聯。特定資料寫入增加含有資料寫入之R區塊之使用,且減少含有相關聯於與特定資料寫入相同之LBA的先前資料寫入之R區塊之使用。根據資料寫入更新R區塊使用計數資料結構包含三個操作:增加含有資料寫入之R區塊之使用計數;減少含有先前資料寫入之R區塊之使用計數;及對具有特定資料寫入之對應出現時間值之R區塊使用計數資料結構標註時間戳記。若使R區塊使用計數資料結構之檢查點能夠在執行三個操作中之至少一者之後且在完成所有三個操作之前出現,則檢查點將記載R區塊使用計數資料結構之不一致版本,且(諸如)在電源故障之後的R區塊使用計數資料結構之復原將導致不反映復原之後的R區塊之實際使用的不一致值。因此,在各種實施例中,相對於檢查點以原子方式執行根據每一資料寫入對R區塊使用計數資料結構之各別更新。
圖11按照FLM及SLM復原處理1100說明例如在失靈之後復原及/或重建FLM及SLM資訊(諸如,圖2及圖8之一或多者中所說明之FLM及SLM資訊)以及其他NVM管理資料結構的選定細節。復原及重建操作與結合如圖9及圖10中之一或多者所說明之自我記錄及階層一致性技術的操作相容。
如圖11所說明之處理回應於失靈之後的事件(例如,恢復/重建請求、軟重設或硬重設,或通電)而開始(開始1101)。定位檢查點R區塊之最後R區塊(例如,最新近寫入之R區塊),且定位最後檢查點R區塊內之最後資訊(例如,最新近寫入之資訊)(定位FIFO結束1111)。接著處理連續早於最新近寫入者的檢查點R區塊之部分,直至重建構FLM之整個映像。在一些實施例中,FLM重建構處理包括定位最晚之FLM部分及定位最早期時間標記(定位最晚FLM厚塊及最早期出現時間1112),且接著將FLM重建構為呈最早期時間標記(將FLM復原為呈最早期出現時間1113)。在一些實施例及/或使用情形中,FLM之一或多個較晚部分與較早部分不連續,此歸因於孔,諸如歸因於在電源發生故障時未能完成的寫入。在恢復期間,捨棄與較早部分不連續之部分。
在基於檢查點R區塊重建構FLM之後,比重建構之FLM新近(根據與更新一起儲存之時間標記)之任何SLM更新應用於FLM(根據SLM更新來更新FLM 1114)。接著,針對比任何對應SLM條目新近(根據與寫入資料一起儲存之時間標記)之任何資料寫入更新SLM(根據資料更新來更新SLM 1115)。接著,處理完成(結束1199),且FLM、SLM及其他資料結構連貫且一致,且就緒用於操作SSD之NVM。
在一些實施例中,藉由確保被快取之任何經修改之SLM條目在稱為映射清除間隔的所判定之數目個出現時間值內清除至NVM來限定經處理以更新SLM之寫入資料之量。舉例而言,每一經修改之SLM條目(或每一經修改之SLM頁面)追蹤自最後清除各別經修改之SLM條目(或SLM頁面)起的修改之最早出現時間值,且各別經修改之SLM條目(或SLM頁面)係在各別經修改之SLM條目(或SLM頁面)在最晚資料寫入之後多達10,000個出現時間值之前清除。在自較新近之資料寫入重建構SLM時,僅將最新近之約10,000個資料寫入(如藉由出現時間值所量測)視為SLM更新,此係因為任何較早期資料寫入已寫入至NVM。
在一些實施例中,復原程序針對資料串流、映射串流及檢查點FIFO中之每一者而判定各別最晚有效出現時間及各別最早所需出現時間。復原程序自檢查點FIFO之最早所需出現時間與檢查點FIFO之最晚有效出現時間之間發現的FLM之部分復原FLM。在映射串流中之最早所需出現時間與映射串流中之最晚有效出現時間之間在映射串流中發現之SLM更新應用於FLM,以使得FLM與映射串流一致。來自在資料串流中之最早所需出現時間與資料串流中之最晚有效出現時間之間在資料串流中發現之資料寫入的更新接著應用於SLM,以使得SLM與資料串流一致。在各種實施例及/或使用情形中,將來自資料串流中之資料寫入之更新應用於SLM(諸如)在快取無法保持恢復所需之所有更新時,視情況及/或選擇性地將SLM條目及/或頁面自快取清除至映射串流。恢復期間之SLM條目及/或頁面清除更新FLM之條目,且轉而FLM之一或多個部分在恢復期間視情況及/或選擇性地寫入至檢查點FIFO。在各種實施例中,復原程序之完成將「復原完成」標記(諸如,特定類型之標頭)寫入至串流中之一或多者。
在一些實施例中,資料串流中之最晚有效出現時間為與恢復所需之資料串流之所有優先部分連續的資料串流中之最後寫入之出現時間值(對應於資料串流中之資料寫入)。映射串流中之最晚有效出現時間為與恢復所需之映射串流之所有優先部分連續的映射串流中之最後寫入之出現時間值(對應於映射串流中之SLM條目及/或頁面寫入),且在資料串流中之最晚有效出現時間時或之前。檢查點FIFO中之最晚有效出現時間為與恢復所需之檢查點FIFO之所有優先部分連續的檢查點FIFO中之最後寫入之出現時間值(對應於檢查點FIFO中之FLM之部分),且在映射串流中之最晚有效出現時間時或之前。在其他實施例中,檢查點FIFO中之最晚有效出現時間亦與一或多個其他資料結構之連續檢查點相關聯,諸如,與R區塊使用空間資料結構相關聯。
在一些實施例中,檢查點FIFO中之最早所需出現時間為FLM之最晚部分的出現時間值,以使得在檢查點FIFO中之最早所需出現時間及檢查點FIFO中之最晚有效出現時間內獲得FLM之一個完整(但不連貫)之版本。映射串流中之最早所需出現時間為在檢查點FIFO中之最早所需出現時間時或之前的映射串流中之最晚SLM條目及/或頁面之出現時間值。資料串流中之最早所需出現時間為不晚於映射串流中之最晚有效出現時間之前的映射清除間隔的最晚資料寫入的出現時間值。
在一些實施例及/或使用情形中,諸如,在存在失靈時,在恢復期間發現資料串流中之孔。孔之前的資訊為有效的,而孔之後的資訊並非如此。記錄檔記載視情況添加至資料串流(例如,在恢復期間)以指示孔與恢復指示之開始之間的資訊為無效的,而在恢復指示之開始後的資訊為新有效資訊之開始。在各種實施例中,恢復指示之開始為特殊類型之標頭,諸如,日誌標頭,其指示恢復處理之開始。
在一些情況塊下,復原處理為相對低延時的。舉例而言,若失靈為在無寫入或回收歷時相對長的時間時的電力損耗,則將無SLM更新應用於FLM,且將不存在尚未在SLM中反映的資料寫入。或者,在其他情況下,復原程序為相對高延時的。舉例而言,若失靈使得檢查點R區塊及/或映射R區塊全部或實質上不一致,則讀取多達儲存有效資料資訊的全部資料R區塊以重建FLM,且亦完全重建構SLM。在其他情況下,復原程序為中等延時的。舉例而言,若失靈使得檢查點R區塊完整,且相對少的映射更新尚未在檢查點R區塊中反映,且相對少的資料寫入尚未在映射R區塊中反映,則需要FLM及SLM之相對少的重建構。
在各種實施例中,圖6至圖11之一或多個元件對應於或相關於圖1A之一或多個元件。舉例而言,圖6之器件601...609中之一或多者共同對應於NVM 199之全部或部分。另舉例而言,圖7之快閃記憶體晶粒710.65...710.0共同對應於快閃記憶體晶粒194之例項。再舉例而言,圖10中所說明之R區塊之串流儲存於NVM 199之全部或部分中。在各種實施例中,圖1A之一或多個元件管理、控制及/或實施如本文別處所描述的與自我記錄及/或階層一致性相關之技術的全部或任何部分。舉例而言,CPU 171之軟體執行能力之一部分用於管理映射資訊之恢復(例如,如圖11所說明)。另舉例而言,緩衝器131之全部或部分實施如圖9所描述之緩衝之全部或任何部分。 額外實施方案/實施例資訊
在各種實施例中,(例如)由一或多個狀態機實施操作及/或功能(諸如,如圖8至圖11所描述之操作及/或功能)之全部或任何部分。狀態機之實例實施方案包括硬體(例如,邏輯閘及/或電路、專用狀態機電路或硬線控制電路)、軟體(例如,韌體或微碼)或硬體與軟體之組合。在一些實施例中,至少部分經由一或多個韌體映像、一或多個驅動程式及/或一或多個應用程式來實施狀態機中之一或多者。作為具體實例,部分經由圖1A之SSD控制器100、部分經由CPU核心172所執行之韌體、部分經由圖1B之韌體106、部分經由驅動程式107及/或部分藉由應用程式109來實施狀態機中之一或多者。
在各種實施例中,經由硬體及/或軟體技術之任何組合(例如)藉由圖1A之連貫性管理179、轉譯管理177及/或映射141中之任何一或多者、在圖1A之連貫性管理179、轉譯管理177及/或映射141中之任何一或多者的控制下及/或根據圖1A之連貫性管理179、轉譯管理177及/或映射141中之任何一或多者來實施圖8至圖11所描述之操作及/或功能之全部或任何部分。 實例實施技術
在一些實施例中,藉由與電腦系統進行之處理相容的規格來指定由實施自我記錄及階層一致性之系統執行的操作之全部或任何部分的各種組合,其用於管理非揮發儲存器(例如,具有快閃記憶體)、計算主機快閃記憶體控制器及/或SSD控制器(諸如,圖1A之SSD控制器100),及處理器、微處理器、系統單晶片、特殊應用積體電路、硬體加速器或提供前述操作之全部或部分之其他電路的部分。該規格係根據各種描述,諸如硬體描述語言、電路描述、接線對照表描述、遮罩描述或佈局描述。實例描述包括:Verilog、VHDL、SPICE、SPICE變體(諸如,Pspice)、IBIS、LEE、DEF、GDS-II、OASIS或其他描述。在各種實施例中,處理包括用以產生、驗證或指定適合於包括於一或多個積體電路上之邏輯及/或電路的解譯、編譯、模擬及合成之任何組合。根據各種實施例,每一積體電路可根據各種技術來設計及/或製造。該等技術包括可程式化技術(諸如,場或遮罩可程式化閘陣列積體電路)、半定製技術(諸如,全部或部分地以晶胞為基礎之積體電路)及全定製技術(諸如,實質上專門化的積體電路)、上述技術之任何組合,或與積體電路之設計及/或製造相容的任何其他技術。
在一些實施例中,藉由執行及/或解譯一或多個程式指令、藉由解譯及/或編譯一或多個原始及/或指令碼語言陳述式,或藉由執行二進位指令(該等二進位指令係藉由編譯、轉譯及/或解譯在程式語言及/或指令碼語言陳述式中所表達之資訊而產生)來執行如由儲存有一指令集的電腦可讀媒體所描述的操作之全部或部分的各種組合。該等陳述式與任何標準程式語言或指令碼語言(諸如C、C++、Fortran、Pascal、Ada、Java、VBscript及Shell)相容。程式指令、語言陳述式或二進位指令中之一或多者視情況儲存於一或多個電腦可讀儲存媒體元件上。在各種實施例中,將程式指令中之一些、全部或各個部分實現為一或多個函式、常式、副常式、直插式常式、程序、巨集或其部分。 結論
僅為了便於準備文字及圖式而在描述中作出某些選擇,且除非存在相反之指示,否則該等選擇本質上不應解釋為傳達關於所描述之實施例之結構或操作的額外資訊。該等選擇之實例包括:用於圖編號之指定的特定組織或指派,及用以識別且參考該等實施例之特徵及元件的元件識別符(例如,標註或數字標識符)之特定組織或指派。
字「包括」具體地意欲解釋為描述開端式範疇的邏輯集合的抽象義,且除非後續明確接著字「在...內」,否則並不意謂傳達實體內含項目。
儘管已出於描述及理解清楚起見而相當詳細地描述上述實施例,但本發明並不限於所提供之細節。存在本發明之許多實施例。所揭示之實施例為例示性的而非限制性的。
應理解,構造、配置及使用方面之許多變化有可能與描述一致,且在所頒予之專利之申請專利範圍的範疇內。舉例而言,互連及功能單元位元寬度、時脈速度及所使用之技術的類型可根據各種實施例在每一組件區塊中變化。被給予互連及邏輯之名稱僅為例示性的,且不應解釋為限制所描述之概念。流程圖及流程圖程序、動作及功能元件的次序及配置可根據各種實施例變化。且,除非具體相反地陳述,否則所指定之值範圍、所使用之最大值及最小值或其他特定規格(諸如,快閃記憶體技術類型;及暫存器及緩衝器中之條目或級的數目)僅為所描述之實施例之所指定之值範圍、所使用之最大值及最小值或其他特定規格,預期其將追蹤實施技術之改良及改變,且不應解釋為限制。
可使用此項技術中已知之功能上等效的技術,以替代描述成實施各種組件、子系統、操作、函式、常式、副常式、直插式常式、程序、巨集或其部分的技術。亦應理解,依據更快處理(促進先前在硬體中之功能遷移至軟體中)及更高整合密度(促進先前在軟體中之功能遷移至硬體中)的實施例相依設計約束及技術趨勢,實施例之許多功能性態樣可選擇性地實現於硬體(亦即,通用電路)或軟體(亦即,經由程式化控制器或處理器之一些方式)中。各種實施例中之具體變化包括(但不限於):分割之差異;不同外形尺寸及組態;不同作業系統及其他系統軟體之使用;不同介面標準、網路協定或通信鏈路之使用;及在根據特定應用之獨特工程及商務約束在實施本文中所描述之概念時將預期到的其他變化。
已藉由遠超過所描述實施例之許多態樣之最小實施所需範圍的細節及環境內容脈絡描述了該等實施例。一般熟習此項技術者將認識到,在不更改剩餘元件之間的基本協作的情況下,一些實施例省略了所揭示之組件或特徵。因此,應理解,不需要許多所揭示細節來實施所描述之實施例之各種態樣。在剩餘元件可與先前技術區分開的範圍內,所省略之組件及特徵並不限制本文中所描述之概念。
設計方面之所有此等變化為在由所描述之實施例傳達的教示上的非實質改變。亦應理解,本文中所描述之實施例廣泛適用於其他計算及網路連接應用,且並不限於所描述之實施例之特定應用或產業。本發明因此將解釋為包括涵蓋於所頒予之專利之申請專利範圍的範疇內的所有可能之修改及變化。
100‧‧‧SSD控制器
101‧‧‧SSD
102‧‧‧主機
103‧‧‧(可選)交換機/網狀架構/中間控制器
104‧‧‧中間介面
105‧‧‧OS
106‧‧‧韌體(FW)
107‧‧‧驅動程式
107D‧‧‧點線箭頭(主機軟體←→I/O器件通信)
109‧‧‧應用程式
109D‧‧‧點線箭頭(經由驅動程式之應用程式←→I/O器件通信)
109V‧‧‧點線箭頭(經由VF之應用程式←→I/O器件通信)
110‧‧‧外部介面
111‧‧‧主機介面
112C‧‧‧(可選)卡式記憶體
113‧‧‧標籤追蹤
114‧‧‧多器件管理軟體
115‧‧‧主機軟體
116‧‧‧I/O卡
117‧‧‧I/O及儲存器件/資源
118‧‧‧伺服器
119‧‧‧LAN/WAN
121‧‧‧資料處理
123‧‧‧引擎
131‧‧‧緩衝器
133‧‧‧DMA
135‧‧‧ECC-X
137‧‧‧記憶體
141‧‧‧映射
143‧‧‧表
151‧‧‧回收器
161‧‧‧ECC
171‧‧‧CPU
172‧‧‧CPU核心
173‧‧‧命令管理
175‧‧‧緩衝器管理
177‧‧‧轉譯管理
179‧‧‧連貫性管理
180‧‧‧記憶體介面
181‧‧‧器件管理
182‧‧‧識別碼管理
190‧‧‧器件介面
191‧‧‧器件介面邏輯
192‧‧‧快閃記憶體器件
193‧‧‧排程
194‧‧‧快閃記憶體晶粒
199‧‧‧NVM
211‧‧‧LBA
213‧‧‧LPN
215‧‧‧邏輯位移
221‧‧‧LPN之映射資訊
223‧‧‧讀取單元位址
225‧‧‧以讀取單元為單位之長度
311‧‧‧讀取資料
313‧‧‧第一讀取單元
315‧‧‧最後讀取單元
401A‧‧‧讀取單元
401B‧‧‧讀取單元
410B‧‧‧標頭標記(HM)
411A‧‧‧標頭1
411B‧‧‧標頭1
412B‧‧‧標頭2
419A‧‧‧標頭N
419B‧‧‧標頭N
421A‧‧‧資料位元組
421B‧‧‧資料位元組
422B‧‧‧資料位元組
429B‧‧‧資料位元組
431A‧‧‧可選填補位元組
431B‧‧‧可選填補位元組
501‧‧‧標頭
511‧‧‧類型
513‧‧‧最後指示符
515‧‧‧旗標
517‧‧‧LPN
519‧‧‧長度
521‧‧‧位移
523‧‧‧出現時間
600‧‧‧等量化方向
601‧‧‧器件
603‧‧‧器件
609‧‧‧器件
611‧‧‧讀取單元
613‧‧‧讀取單元
619‧‧‧讀取單元
621‧‧‧頁面
623‧‧‧頁面
629‧‧‧頁面
631‧‧‧區塊
633‧‧‧區塊
639‧‧‧區塊
641‧‧‧讀取單元
643‧‧‧讀取單元
649‧‧‧讀取單元
651‧‧‧頁面
653‧‧‧頁面
659‧‧‧頁面
661‧‧‧區塊
663‧‧‧區塊
669‧‧‧區塊
671‧‧‧讀取單元
673‧‧‧讀取單元
679‧‧‧讀取單元
681‧‧‧頁面
683‧‧‧頁面
689‧‧‧頁面
691‧‧‧區塊
693‧‧‧區塊
699‧‧‧區塊
710.0‧‧‧快閃記憶體晶粒
710.0B0‧‧‧區塊
710.0B1‧‧‧區塊
710.0BB‧‧‧區塊
710.0P0‧‧‧頁面
710.0P1‧‧‧頁面
710.0PP‧‧‧頁面
710.65‧‧‧快閃記憶體晶粒
710.65B0‧‧‧區塊
710.65B1‧‧‧區塊
710.65BB‧‧‧區塊
710.65P0‧‧‧頁面
710.65P1‧‧‧頁面
710.65PP‧‧‧頁面
760.0‧‧‧R區塊
760.1‧‧‧R區塊
760.R‧‧‧R區塊
800‧‧‧LBA至NVM位置映射
810‧‧‧FLM
810.1‧‧‧SLM頁面/長度
810.2‧‧‧SLM頁面/長度
810.M‧‧‧SLM頁面/長度
810S‧‧‧SLM指標
820‧‧‧SLM頁面
820.1‧‧‧LB頁面/長度
820.2‧‧‧LB頁面/長度
820.N‧‧‧LB頁面/長度
820L‧‧‧LB指標
821‧‧‧LBA
822‧‧‧整數除法器
822Q‧‧‧FLM索引
822R‧‧‧SLM頁面索引
823‧‧‧SLM條目/SLM頁面(CSR)
900‧‧‧資料、映射及檢查點寫入處理
901‧‧‧開始
910‧‧‧接收並寫入資料
911‧‧‧自主機接收資料
912‧‧‧將資料格式化
913‧‧‧自我記錄資料
914‧‧‧對資料標註時間戳記
915‧‧‧緩衝資料
916‧‧‧將資料寫入至NVM
916C‧‧‧完成
920‧‧‧產生並寫入映射條目
922‧‧‧產生資料之SLM條目
923‧‧‧自我記錄SLM條目
924‧‧‧對SLM條目標註時間戳記
925‧‧‧緩衝SLM條目
926‧‧‧將SLM條目寫入至NVM
926C‧‧‧完成
932‧‧‧產生SLM條目之FLM條目
933‧‧‧自我記錄FLM條目
934‧‧‧對FLM條目標註時間戳記
935‧‧‧緩衝FLM條目
936‧‧‧將FLM條目寫入至NVM
995‧‧‧對元素標註檢查點
999‧‧‧結束
1020‧‧‧資料R區塊
1021‧‧‧資料-1
1021E‧‧‧出現時間-1
1022‧‧‧資料-2
1022E‧‧‧出現時間-2
1023‧‧‧資料-3
1023E‧‧‧出現時間-3
1030‧‧‧SLM(映射)R區塊
1031‧‧‧SLM-1
1031E‧‧‧出現時間-1
1032‧‧‧SLM-2
1032E‧‧‧出現時間-2
1033‧‧‧SLM-3
1033E‧‧‧出現時間-3
1040‧‧‧檢查點FIFO R區塊
1041‧‧‧FLM-1
1041E‧‧‧出現時間-1
1042‧‧‧FLM-2
1042E‧‧‧出現時間-2
1043‧‧‧FLM-3
1043E‧‧‧出現時間-3
1050‧‧‧完成FLM
1100‧‧‧FLM及SLM復原處理
1101‧‧‧開始
1111‧‧‧定位FIFO結束
1112‧‧‧定位最晚FLM厚塊及最早期出現時間
1113‧‧‧將FLM復原為呈最早期出現時間
1114‧‧‧根據SLM更新來更新FLM
1115‧‧‧根據資料更新來更新SLM
1199‧‧‧結束
圖1A說明固態磁碟(SSD)之實施例之選定細節,該固態磁碟(SSD)包括將自我記錄及階層一致性用於管理諸如快閃記憶體之非揮發儲存器的SSD控制器。
圖1B說明包括圖1A之SSD之一或多個例項的系統之各種實施例之選定細節。
圖2說明映射邏輯區塊位址(LBA)之邏輯頁號(LPN)部分之實施例的選定細節。
圖3說明存取讀取單元位址處之非揮發記憶體(NVM)以產生讀取資料之實施例的選定細節,該讀取資料組織為共同地具有以讀取單元之配量來量測之長度的各種讀取單元。
圖4A說明讀取單元之實施例的選定細節。
圖4B說明讀取單元之另一實施例的選定細節。
圖5說明具有數個欄位之標頭之實施例的選定細節。
圖6說明多個NVM器件之區塊、頁面及讀取單元之實施例的選定細節。
圖7說明R區塊之實施例的選定細節。
圖8說明經由雙階映射將LBA映射至NVM中所儲存之邏輯區塊(LB)之實施例的選定細節,該雙階映射具有一一階映射(FLM)及一或多個二階映射(SLM)頁面。
圖9說明自主機接收資料並將其寫入至NVM之各種實施例的選定細節,包括寫入SLM及FLM資訊及各種形式之自我記錄與時間戳記記載。
圖10說明將主機資料及/或回收資料、映射資訊及檢查點先進先出(FIFO)部分串流傳輸至NVM之各種實施例的選定細節。
圖11說明例如在失靈之後復原及/或重建FLM及SLM資訊以及其他NVM管理資料結構的選定細節。
900‧‧‧資料、映射及檢查點寫入處理
901‧‧‧開始
910‧‧‧接收並寫入資料
911‧‧‧自主機接收資料
912‧‧‧將資料格式化
913‧‧‧自我記錄資料
914‧‧‧對資料標註時間戳記
915‧‧‧緩衝資料
916‧‧‧將資料寫入至NVM
916C‧‧‧完成
920‧‧‧產生並寫入映射條目
922‧‧‧產生資料之SLM條目
923‧‧‧自我記錄SLM條目
924‧‧‧對SLM條目標註時間戳記
925‧‧‧緩衝SLM條目
926‧‧‧將SLM條目寫入至NVM
926C‧‧‧完成
932‧‧‧產生SLM條目之FLM條目
933‧‧‧自我記錄FLM條目
934‧‧‧對FLM條目標註時間戳記
935‧‧‧緩衝FLM條目
936‧‧‧將FLM條目寫入至NVM
995‧‧‧對元素標註檢查點
999‧‧‧結束
权利要求:
Claims (39)
[1] 一種系統,其包含:用於以一第一次序將一系列資料單元配置於一非揮發記憶體(NVM)中的構件,該等資料單元中之每一者與複數個時間戳記中之一各別時間戳記相關聯;用於以一第二次序將一系列資料映射單元配置於該NVM中的構件,該等資料映射單元中之每一者與該複數個時間戳記中之一各別時間戳記相關聯;其中該等資料映射單元中之每一者包含該等資料單元中之一對應資料單元的該NVM中之一位置;且其中與該等資料單元中之每一者相關聯之該各別時間戳記係在與該對應資料映射單元相關聯之該各別時間戳記時或之前。
[2] 如請求項1之系統,其中:該等資料單元中之每一者對應於自一主機至一各別邏輯區塊位址(LBA)之一各別資料寫入;該等資料單元中之一先前資料單元及一後續資料單元對應於該等資料寫入中的至該等各別LBA中之一相同LBA的資料寫入;且該先前資料單元不具有該等資料映射單元中之一相關聯之資料映射單元。
[3] 如請求項1之系統,其進一步包含:用於判定該等資料單元中之一最晚有效且連續之資料單元的構件;用於判定該等資料映射單元中之一最晚有效且連續之資料映射單元的構件,其中與該等資料映射單元中之該最晚有效且連續之資料映射單元相關聯的該各別時間戳記係在與該等資料單元中之該最晚有效且連續之資料單元相關聯的該各別時間戳記時或之前;用於僅恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元的構件;及藉此,在恢復中,與在與該等資料單元中之該最晚有效且連續之資料單元相關聯的該各別時間戳記之後的任何該等各別時間戳記相關聯的任何該等資料映射單元被忽略。
[4] 如請求項1之系統,其進一步包含用於與一主機介接以傳達自該NVM讀取及/或寫入至該NVM之資訊的一構件。
[5] 如請求項4之系統,其中用於介接的該構件與以下各者中之一或多者相容:一通用串列匯流排(USB)介面標準,一緊密快閃記憶體(CF)介面標準,一多媒體卡(MMC)介面標準,一嵌入式MMC(eMMC)介面標準,一霹靂介面標準,一UFS介面標準,一安全數位(SD)介面標準,一記憶棒介面標準,一xD圖像卡介面標準,一整合驅動電子(IDE)介面標準,一串列進階附接技術(SATA)介面標準,一外部SATA(eSATA)介面標準,一小型電腦系統介面(SCSI)介面標準,一串列附接小型電腦系統介面(SAS)介面標準,一光纖通道介面標準,一乙太網路介面標準,及一快速周邊組件互連(PCIe)介面標準。
[6] 如請求項4之系統,其中該主機包含以下各者中之一或多者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器,一儲存附接網路(SAN),一網路附接儲存(NAS)器件,一直接附接儲存(DAS)器件,一儲存設備,一個人電腦(PC),一膝上型電腦,一筆記型電腦,一迷你筆記型電腦,一平板型器件或電腦,一超輕薄筆記型電腦,一電子閱讀器件(一電子閱讀器),一個人數位助理(PDA),一導航系統,一(手持型)全球定位系統(GPS)器件,一汽車控制系統,一汽車媒體控制系統或電腦,一印表機、影印機或傳真機或一體式器件,一銷售點(POS)器件,一收銀機,一媒體播放器,一電視,一媒體記錄器,一數位視訊記錄器(DVR),一數位相機,一蜂巢式手機,一無線電話手機,及一電子遊戲機。
[7] 如請求項6之系統,其包含該主機之全部或任何部分。
[8] 如請求項1之系統,其進一步包含用於與包含該NVM之全部或部分之一或多個快閃記憶體介接的一構件。
[9] 如請求項8之系統,其中用於介接的該構件與以下各者中之一或多者相容:一開放「反及」快閃記憶體介面(ONFI),一雙態觸變模式介面,一雙資料速率(DDR)同步介面,一DDR2同步介面,一同步介面,及一非同步介面。
[10] 如請求項8之系統,其中該等快閃記憶體中之至少一者包含以下各者中之一或多者:「反及」快閃技術儲存晶胞,及「反或」快閃技術儲存晶胞。
[11] 如請求項8之系統,其中該等快閃記憶體中之至少一者包含以下各者中之一或多者:單位階晶胞(SLC)快閃技術儲存晶胞,及多位階晶胞(MLC)快閃技術儲存晶胞。
[12] 如請求項8之系統,其進一步包含該等快閃記憶體之全部或任何一或多者。
[13] 一種系統,其包含:用於將一系列資料儲存單元寫入於一非揮發記憶體(NVM)中的構件,該等資料儲存單元中之每一者與複數個時間戳記中之一各別時間戳記相關聯;用於將一系列資料映射單元寫入於該NVM中的構件,該等資料映射單元中之每一者與該等時間戳記中之一各別時間戳記相關聯;其中該等資料映射單元中之每一者包含該等資料儲存單元中之一對應資料儲存單元的該NVM中之一位置;且其中與該等資料儲存單元中之每一者相關聯之該各別時間戳記指示一相對時代,該相對年代相同於或早期於與該對應資料映射單元相關聯之該各別時間戳記所指示之一相對時代。
[14] 如請求項13之系統,其中:該等資料儲存單元中之一第一資料儲存單元對應於自一主機至一特定邏輯區塊位址(LBA)之一第一資料寫入;該等資料儲存單元中之一第二資料儲存單元對應於自該主機至該特定LBA之一第二資料寫入;該第一資料寫入以時間次序優先於該第二資料寫入;且該等資料映射單元中無一者對應於該第一資料儲存單元。
[15] 如請求項13之系統,其中該等資料儲存單元之該寫入係根據一第一次序,且該等資料映射單元之該寫入係根據一第二次序。
[16] 如請求項15之系統,其進一步包含:用於根據該第一次序判定該等資料儲存單元中之一最晚有效且連續之資料儲存單元的構件;用於根據該第二次序判定該等資料映射單元中之一最晚有效且連續之資料映射單元的構件,該等資料映射單元中之該最晚有效且連續之資料映射單元與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯,該相對時代相同於或早期於與該等資料儲存單元中之該最晚有效且連續之資料儲存單元相關聯之該各別時間戳記所指示之一相對時代;及用於根據該第一次序及該第二次序僅恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元的構件。
[17] 如請求項15之系統,其進一步包含:用於根據該第一次序判定該等資料儲存單元中之一第一資料儲存單元的構件,該等資料儲存單元中之該第一資料儲存單元為該等資料儲存單元中之一最晚有效且連續之資料儲存單元;用於根據該第二次序判定該等資料映射單元中之一最晚有效且連續之資料映射單元的構件,該等資料映射單元中之該最晚有效且連續之資料映射單元與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯,該相對時代相同於或早期於與該等資料儲存單元中之該最晚有效且連續之資料儲存單元相關聯之該各別時間戳記所指示之一相對時代;用於根據該第一次序判定該等資料儲存單元中之一第二資料儲存單元的構件,該等資料儲存單元中之該第二資料儲存單元為與指示一相對時代的該等各別時間戳記中之一時間戳記相關聯的該等資料儲存單元中之一最晚資料儲存單元,該相對時代相同於或早於先於與該等資料映射單元中之該最晚有效且連續之資料映射單元相關聯的該各別時間戳記所指示之該相對時代的一所判定之量;及用於使用該等資料單元中的單獨來自該等資料儲存單元中之該第二資料儲存單元至該等資料儲存單元中之該第一資料儲存單元的資料單元,根據該第一次序及該第二次序恢復該等資料映射單元中之資料映射單元直至該等資料映射單元中之該最晚有效且連續之資料映射單元的構件。
[18] 如請求項17之系統,其進一步包含:用於針對先前未寫入至該NVM之該等資料映射單元中的每一經修改之資料映射單元,識別與等於與該等資料儲存單元中之一特定資料儲存單元相關聯之該各別時間戳記的一最早期更新相關聯的該等時間戳記中之一各別時間戳記的構件,該經修改之資料映射單元包含該特定資料儲存單元的該NVM中之該位置;及用於在寫入與大於晚於與該經修改之資料映射單元之該最早期更新相關聯的該各別時間戳記的該所判定之量的該等各別時間戳記中之一時間戳記相關聯的該等資料儲存單元中之一者時或之前,將先前未寫入至該NVM之該等經修改之資料映射單元中之每一者寫入至該NVM的構件。
[19] 如請求項13之系統,其進一步包含用於與一主機介接以傳達自該NVM讀取及/或寫入至該NVM之資訊的一構件。
[20] 如請求項19之系統,其中用於介接的該構件與以下各者中之一或多者相容:一通用串列匯流排(USB)介面標準,一緊密快閃記憶體(CF)介面標準,一多媒體卡(MMC)介面標準,一嵌入式MMC(eMMC)介面標準,一霹靂介面標準,一UFS介面標準,一安全數位(SD)介面標準,一記憶棒介面標準,一xD圖像卡介面標準,一整合驅動電子(IDE)介面標準,一串列進階附接技術(SATA)介面標準,一外部SATA(eSATA)介面標準,一小型電腦系統介面(SCSI)介面標準,一串列附接小型電腦系統介面(SAS)介面標準,一光纖通道介面標準,一乙太網路介面標準,及一快速周邊組件互連(PCIe)介面標準。
[21] 如請求項19之系統,其中該主機包含以下各者中之一或多者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器,一儲存附接網路(SAN),一網路附接儲存(NAS)器件,一直接附接儲存(DAS)器件,一儲存設備,一個人電腦(PC),一膝上型電腦,一筆記型電腦,一迷你筆記型電腦,一平板型器件或電腦,一超輕薄筆記型電腦,一電子閱讀器件(一電子閱讀器),一個人數位助理(PDA),一導航系統,一(手持型)全球定位系統(GPS)器件,一汽車控制系統,一汽車媒體控制系統或電腦,一印表機、影印機或傳真機或一體式器件,一銷售點(POS)器件,一收銀機,一媒體播放器,一電視,一媒體記錄器,一數位視訊記錄器(DVR),一數位相機,一蜂巢式手機,一無線電話手機,及一電子遊戲機。
[22] 如請求項21之系統,其包含該主機之全部或任何部分。
[23] 如請求項13之系統,其進一步包含用於與包含該NVM之全部或部分之一或多個快閃記憶體介接的一構件。
[24] 如請求項23之系統,其中用於介接的該構件與以下各者中之一或多者相容:一開放「反及」快閃記憶體介面(ONFI),一雙態觸變模式介面,一雙資料速率(DDR)同步介面,一DDR2同步介面,一同步介面,及一非同步介面。
[25] 如請求項23之系統,其中該等快閃記憶體中之至少一者包含以下各者中之一或多者:「反及」快閃技術儲存晶胞,及「反或」快閃技術儲存晶胞。
[26] 如請求項23之系統,其中該等快閃記憶體中之至少一者包含以下各者中之一或多者:單位階晶胞(SLC)快閃技術儲存晶胞,及多位階晶胞(MLC)快閃技術儲存晶胞。
[27] 如請求項23之系統,其進一步包含該等快閃記憶體之全部或任何一或多者。
[28] 一種系統,其包含:用於根據一儲存串流將複數個儲存單元寫入至一非揮發記憶體(NVM)的構件,該等儲存單元中之每一者包含一資料部分及一對應時間戳記部分;用於根據一映射串流將複數個映射單元寫入至該NVM的構件,該等映射串流中之每一者包含一條目部分及一對應時間戳記部分;其中該等條目部分中之至少一些中之每一者使得能夠藉由指定該等資料部分中之至少一對應資料部分來判定各別邏輯區塊(LB)寫入於該NVM中何處;其中一時間性次序由該等時間戳記部分指示,該等儲存單元時間戳記部分根據一時間戳記次序彼此單調地增大,且該等映射單元時間戳記部分根據該時間戳記次序彼此單調地增大;且其中存在至少一個特定時間點,在該至少一個特定時間點,寫入至該NVM之該等映射單元中之至少一者具有一時間戳記部分,該時間戳記部分根據該時間性次序晚於在該特定時間點寫入至該NVM之該等儲存單元時間戳記部分中的根據該時間性次序最晚的儲存單元時間戳記部分。
[29] 如請求項28之系統,其中用於寫入該等儲存單元的該構件以對應於如由該等儲存單元時間戳記部分指示的該時間性次序的一時間次序寫入該等儲存單元,且用於寫入該等映射單元的該構件以對應於如由該等映射單元時間戳記部分指示的該時間性次序的一時間次序寫入該等映射單元。
[30] 如請求項28之系統,其進一步包含用於根據一檢查點串流將一或多個檢查點單元寫入至該NVM的構件,該等檢查點單元中之每一者包含一映射部分及一對應時間戳記部分,且其中該等檢查點時間戳記部分根據該時間戳記次序彼此單調地增大。
[31] 如請求項28之系統,其進一步包含用於與一主機介接以傳達自該NVM讀取及/或寫入至該NVM之資訊的一構件。
[32] 如請求項31之系統,其中用於介接的該構件與以下各者中之一或多者相容:一通用串列匯流排(USB)介面標準,一緊密快閃記憶體(CF)介面標準,一多媒體卡(MMC)介面標準,一嵌入式MMC(eMMC)介面標準,一霹靂介面標準,一UFS介面標準,一安全數位(SD)介面標準,一記憶棒介面標準,一xD圖像卡介面標準,一整合驅動電子(IDE)介面標準,一串列進階附接技術(SATA)介面標準,一外部SATA(eSATA)介面標準,一小型電腦系統介面(SCSI)介面標準,一串列附接小型電腦系統介面(SAS)介面標準,一光纖通道介面標準,一乙太網路介面標準,及一快速周邊組件互連(PCIe)介面標準。
[33] 如請求項31之系統,其中該主機包含以下各者中之一或多者:一電腦,一工作站電腦,一伺服器電腦,一儲存伺服器,一儲存附接網路(SAN),一網路附接儲存(NAS)器件,一直接附接儲存(DAS)器件,一儲存設備,一個人電腦(PC),一膝上型電腦,一筆記型電腦,一迷你筆記型電腦,一平板型器件或電腦,一超輕薄筆記型電腦,一電子閱讀器件(一電子閱讀器),一個人數位助理(PDA),一導航系統,一(手持型)全球定位系統(GPS)器件,一汽車控制系統,一汽車媒體控制系統或電腦,一印表機、影印機或傳真機或一體式器件,一銷售點(POS)器件,一收銀機,一媒體播放器,一電視,一媒體記錄器,一數位視訊記錄器(DVR),一數位相機,一蜂巢式手機,一無線電話手機,及一電子遊戲機。
[34] 如請求項33之系統,其包含該主機之全部或任何部分。
[35] 如請求項28之系統,其進一步包含用於與包含該NVM之全部或部分之一或多個快閃記憶體介接的一構件。
[36] 如請求項35之系統,其中用於介接的該構件與以下各者中之一或多者相容:一開放「反及」快閃記憶體介面(ONFI),一雙態觸變模式介面,一雙資料速率(DDR)同步介面,一DDR2同步介面,一同步介面,及一非同步介面。
[37] 如請求項35之系統,其中該等快閃記憶體中之至少一者包含以下各者中之一或多者:「反及」快閃技術儲存晶胞,及「反或」快閃技術儲存晶胞。
[38] 如請求項35之系統,其中該等快閃記憶體中之至少一者包含以下各者中之一或多者:單位階晶胞(SLC)快閃技術儲存晶胞,及多位階晶胞(MLC)快閃技術儲存晶胞。
[39] 如請求項35之系統,其進一步包含該等快閃記憶體之全部或任何一或多者。
类似技术:
公开号 | 公开日 | 专利标题
TWI516931B|2016-01-11|用於非揮發儲存之自我記錄及階層一致性
US20200019463A1|2020-01-16|Non-volatile memory program failure recovery via redundant arrays
TWI537724B|2016-06-11|用於寫入非揮發性記憶體之管理及區域選擇
US9183140B2|2015-11-10|Higher-level redundancy information computation
TWI566254B|2017-01-11|用於操作一記憶體之方法、記憶體系統、記憶體設備及非暫態機器可讀媒體
US9105305B2|2015-08-11|Dynamic higher-level redundancy mode management with independent silicon elements
JP2014142931A|2014-08-07|記憶アドレス空間と不揮発性メモリのアドレス、範囲、および長さとの間のマッピング/変換
同族专利:
公开号 | 公开日
KR20130132662A|2013-12-04|
WO2013052562A1|2013-04-11|
KR101522848B1|2015-05-26|
KR20140084337A|2014-07-04|
TWI516931B|2016-01-11|
US9886383B2|2018-02-06|
JP2014534503A|2014-12-18|
US8949517B2|2015-02-03|
US20170161191A1|2017-06-08|
KR101562781B1|2015-10-23|
EP2764516A1|2014-08-13|
CN103392207B|2017-08-04|
US20140082261A1|2014-03-20|
CN103392207A|2013-11-13|
EP2764516A4|2015-07-08|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
TWI597605B|2016-07-11|2017-09-01|慧榮科技股份有限公司|用於資料儲存裝置的損耗平均方法|
US9857981B2|2015-12-09|2018-01-02|Via Alliance Semiconductor Co., Ltd.|Host interface controller and control method for storage device|
TWI651650B|2018-02-05|2019-02-21|大陸商深圳大心電子科技有限公司|記憶體管理方法及使用所述方法的儲存控制器|
US10866905B2|2016-05-25|2020-12-15|Samsung Electronics Co., Ltd.|Access parameter based multi-stream storage device access|
TWI714800B|2016-09-02|2021-01-01|南韓商三星電子股份有限公司|固態硬碟、非暫時性儲存媒體以及操作固態硬碟的方法|JPH1153235A|1997-08-08|1999-02-26|Toshiba Corp|ディスク記憶装置のデータ更新方法、ならびにディスク記憶制御システム|
US6763424B2|2001-01-19|2004-07-13|Sandisk Corporation|Partial block data programming and reading operations in a non-volatile memory|
KR100445134B1|2002-01-31|2004-08-21|삼성전자주식회사|플래시 메모리 안정화기능을 구비한 호스트 기기 및 그 방법|
US6968439B2|2002-08-29|2005-11-22|Micron Technology, Inc.|Single segment data object management|
US20060174067A1|2005-02-03|2006-08-03|Craig Soules|Method of caching data|
US7594073B2|2006-09-29|2009-09-22|Intel Corporation|Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state|
TW201007734A|2008-08-06|2010-02-16|Genesys Logic Inc|Flash memory control apparatus having signal-converting module|
US7925925B2|2008-12-30|2011-04-12|Intel Corporation|Delta checkpoints for a non-volatile memory indirection table|
CN101576834B|2009-05-08|2012-05-30|西安蓝海本立信息科技有限公司|基于时间戳建立数据视图的连续数据保护系统及方法|
US9753847B2|2009-10-27|2017-09-05|Western Digital Technologies, Inc.|Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping|
CN101930404B|2010-08-27|2012-11-21|威盛电子股份有限公司|存储装置及其操作方法|
EP2764516A4|2011-10-05|2015-07-08|Lsi Corp|SELF-HISTORIZATION AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORES|US8751755B2|2007-12-27|2014-06-10|Sandisk Enterprise Ip Llc|Mass storage controller volatile memory containing metadata related to flash memory storage|
KR101438716B1|2011-08-09|2014-09-11|엘에스아이 코포레이션|I/o 디바이스 및 컴퓨팅 호스팅 상호동작|
EP2764516A4|2011-10-05|2015-07-08|Lsi Corp|SELF-HISTORIZATION AND HIERARCHICAL CONSISTENCY FOR NON-VOLATILE STORES|
US9699263B1|2012-08-17|2017-07-04|Sandisk Technologies Llc.|Automatic read and write acceleration of data accessed by virtual machines|
US9396110B2|2012-12-21|2016-07-19|Advanced Micro Devices, Inc.|Non-volatile hybrid memory|
US9501398B2|2012-12-26|2016-11-22|Sandisk Technologies Llc|Persistent storage device with NVRAM for staging writes|
US9239751B1|2012-12-27|2016-01-19|Sandisk Enterprise Ip Llc|Compressing data from multiple reads for error control management in memory systems|
US9612948B2|2012-12-27|2017-04-04|Sandisk Technologies Llc|Reads and writes between a contiguous data block and noncontiguous sets of logical address blocks in a persistent storage device|
US9454420B1|2012-12-31|2016-09-27|Sandisk Technologies Llc|Method and system of reading threshold voltage equalization|
US9395924B2|2013-01-22|2016-07-19|Seagate Technology Llc|Management of and region selection for writes to non-volatile memory|
US10445229B1|2013-01-28|2019-10-15|Radian Memory Systems, Inc.|Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies|
US9542118B1|2014-09-09|2017-01-10|Radian Memory Systems, Inc.|Expositive flash memory control|
US10642505B1|2013-01-28|2020-05-05|Radian Memory Systems, Inc.|Techniques for data migration based on per-data metrics and memory degradation|
US10552085B1|2014-09-09|2020-02-04|Radian Memory Systems, Inc.|Techniques for directed data migration|
US9652376B2|2013-01-28|2017-05-16|Radian Memory Systems, Inc.|Cooperative flash memory control|
US9454474B2|2013-03-05|2016-09-27|Western Digital Technologies, Inc.|Methods, devices and systems for two stage power-on map rebuild with free space accounting in a solid state drive|
US9870830B1|2013-03-14|2018-01-16|Sandisk Technologies Llc|Optimal multilevel sensing for reading data from a storage medium|
US9244763B1|2013-03-15|2016-01-26|Sandisk Enterprise Ip Llc|System and method for updating a reading threshold voltage based on symbol transition information|
US9236886B1|2013-03-15|2016-01-12|Sandisk Enterprise Ip Llc|Universal and reconfigurable QC-LDPC encoder|
US9367246B2|2013-03-15|2016-06-14|Sandisk Technologies Inc.|Performance optimization of data transfer for soft information generation|
US9159437B2|2013-06-11|2015-10-13|Sandisk Enterprise IP LLC.|Device and method for resolving an LM flag issue|
US9524235B1|2013-07-25|2016-12-20|Sandisk Technologies Llc|Local hash value generation in non-volatile data storage systems|
US9384126B1|2013-07-25|2016-07-05|Sandisk Technologies Inc.|Methods and systems to avoid false negative results in bloom filters implemented in non-volatile data storage systems|
US9235509B1|2013-08-26|2016-01-12|Sandisk Enterprise Ip Llc|Write amplification reduction by delaying read access to data written during garbage collection|
US9298608B2|2013-10-18|2016-03-29|Sandisk Enterprise Ip Llc|Biasing for wear leveling in storage systems|
US9442662B2|2013-10-18|2016-09-13|Sandisk Technologies Llc|Device and method for managing die groups|
US9354981B2|2013-10-21|2016-05-31|Ab Initio Technology Llc|Checkpointing a collection of data units|
US9436831B2|2013-10-30|2016-09-06|Sandisk Technologies Llc|Secure erase in a memory device|
US9263156B2|2013-11-07|2016-02-16|Sandisk Enterprise Ip Llc|System and method for adjusting trip points within a storage device|
CN103546579B|2013-11-07|2017-01-04|陈靓|一种用数据日志提高分布式存储系统可用性的方法|
US9244785B2|2013-11-13|2016-01-26|Sandisk Enterprise Ip Llc|Simulated power failure and data hardening|
US9703816B2|2013-11-19|2017-07-11|Sandisk Technologies Llc|Method and system for forward reference logging in a persistent datastore|
US9520197B2|2013-11-22|2016-12-13|Sandisk Technologies Llc|Adaptive erase of a storage device|
US9520162B2|2013-11-27|2016-12-13|Sandisk Technologies Llc|DIMM device controller supervisor|
US9582058B2|2013-11-29|2017-02-28|Sandisk Technologies Llc|Power inrush management of storage devices|
US9235245B2|2013-12-04|2016-01-12|Sandisk Enterprise Ip Llc|Startup performance and power isolation|
US9703636B2|2014-03-01|2017-07-11|Sandisk Technologies Llc|Firmware reversion trigger and control|
KR102190670B1|2014-03-03|2020-12-14|삼성전자주식회사|마이그레이션 관리자를 포함하는 메모리 시스템|
CN104899114B|2014-03-07|2018-03-20|中国科学院苏州纳米技术与纳米仿生研究所|一种固态硬盘上的连续时间数据保护方法|
US9448876B2|2014-03-19|2016-09-20|Sandisk Technologies Llc|Fault detection and prediction in storage devices|
US9454448B2|2014-03-19|2016-09-27|Sandisk Technologies Llc|Fault testing in storage devices|
US9390814B2|2014-03-19|2016-07-12|Sandisk Technologies Llc|Fault detection and prediction for data storage elements|
US10489161B2|2014-03-26|2019-11-26|Hewlett Packard Enterprise Development Lp|NVM object|
US9606870B1|2014-03-31|2017-03-28|EMC IP Holding Company LLC|Data reduction techniques in a flash-based key/value cluster storage|
US9626399B2|2014-03-31|2017-04-18|Sandisk Technologies Llc|Conditional updates for reducing frequency of data modification operations|
US9626400B2|2014-03-31|2017-04-18|Sandisk Technologies Llc|Compaction of information in tiered data structure|
US9390021B2|2014-03-31|2016-07-12|Sandisk Technologies Llc|Efficient cache utilization in a tiered data structure|
CN104951383A|2014-03-31|2015-09-30|伊姆西公司|用于监测硬盘的健康状况的方法和装置|
US9697267B2|2014-04-03|2017-07-04|Sandisk Technologies Llc|Methods and systems for performing efficient snapshots in tiered data structures|
US9990298B2|2014-05-12|2018-06-05|Western Digital Technologies, Inc|System and method for caching solid state device read request results|
US9208077B1|2014-05-30|2015-12-08|Avago Technologies General IpPte. Ltd.|Forced map entry flush to prevent return of old data|
US10372613B2|2014-05-30|2019-08-06|Sandisk Technologies Llc|Using sub-region I/O history to cache repeatedly accessed sub-regions in a non-volatile storage device|
US10146448B2|2014-05-30|2018-12-04|Sandisk Technologies Llc|Using history of I/O sequences to trigger cached read ahead in a non-volatile storage device|
US10114557B2|2014-05-30|2018-10-30|Sandisk Technologies Llc|Identification of hot regions to enhance performance and endurance of a non-volatile storage device|
US9703491B2|2014-05-30|2017-07-11|Sandisk Technologies Llc|Using history of unaligned writes to cache data and avoid read-modify-writes in a non-volatile storage device|
US10656840B2|2014-05-30|2020-05-19|Sandisk Technologies Llc|Real-time I/O pattern recognition to enhance performance and endurance of a storage device|
US10656842B2|2014-05-30|2020-05-19|Sandisk Technologies Llc|Using history of I/O sizes and I/O sequences to trigger coalesced writes in a non-volatile storage device|
US10162748B2|2014-05-30|2018-12-25|Sandisk Technologies Llc|Prioritizing garbage collection and block allocation based on I/O history for logical address regions|
US9632953B2|2014-06-03|2017-04-25|Qualcomm Incorporated|Providing input/output virtualizationby mapping transfer requests to shared transfer requests lists by IOV host controllers|
US9690720B2|2014-06-03|2017-06-27|Qualcomm Incorporated|Providing command trapping using a request filter circuit in an input/output virtualizationhost controller of a flash-memory-based storage device|
US9652381B2|2014-06-19|2017-05-16|Sandisk Technologies Llc|Sub-block garbage collection|
TWI540582B|2014-07-10|2016-07-01|群聯電子股份有限公司|資料管理方法、記憶體控制電路單元以及記憶體儲存裝置|
US9443601B2|2014-09-08|2016-09-13|Sandisk Technologies Llc|Holdup capacitor energy harvesting|
US10025843B1|2014-09-24|2018-07-17|EMC IP Holding Company LLC|Adjusting consistency groups during asynchronous replication|
CN104461391B|2014-12-05|2019-08-02|上海宝存信息科技有限公司|一种存储设备元数据管理处理方法及系统|
US20160259754A1|2015-03-02|2016-09-08|Samsung Electronics Co., Ltd.|Hard disk drive form factor solid state drive multi-card adapter|
CN106155812A|2015-04-28|2016-11-23|阿里巴巴集团控股有限公司|一种对虚拟主机的资源管理的方法、装置、系统及电子设备|
US10089196B2|2015-07-14|2018-10-02|Shannon Systems Ltd.|Methods for reconfiguring a storage controller when control logic fails and apparatuses using the same|
CN106648439B|2015-07-14|2019-11-29|上海宝存信息科技有限公司|于控制逻辑错误时重新配置存储控制器的方法及装置|
US10552058B1|2015-07-17|2020-02-04|Radian Memory Systems, Inc.|Techniques for delegating data processing to a cooperative memory controller|
US10108503B2|2015-08-24|2018-10-23|Western Digital Technologies, Inc.|Methods and systems for updating a recovery sequence map|
US10552335B2|2015-09-25|2020-02-04|Beijing Lenovo Software Ltd.|Method and electronic device for a mapping table in a solid-state memory|
US10019193B2|2015-11-04|2018-07-10|Hewlett Packard Enterprise Development Lp|Checkpointing a journal by virtualization of non-volatile random access memory|
US10152527B1|2015-12-28|2018-12-11|EMC IP Holding Company LLC|Increment resynchronization in hash-based replication|
US9927985B2|2016-02-18|2018-03-27|SK Hynix Inc.|Method of dynamic table journaling|
US11144496B2|2016-07-26|2021-10-12|Samsung Electronics Co., Ltd.|Self-configuring SSD multi-protocol support in host-less environment|
US11146411B2|2016-07-26|2021-10-12|Samsung Electronics Co., Ltd.|Modular systemfor supporting 50G or 100G ethernet speeds of FPGA+SSD|
US10372659B2|2016-07-26|2019-08-06|Samsung Electronics Co., Ltd.|Multi-mode NMVE over fabrics devices|
US9946489B2|2016-07-27|2018-04-17|Western Digital Technologies, Inc.|Multi-stream journaled replay|
US10229000B2|2016-08-09|2019-03-12|Seagate Llc|Erasure codes to prevent lower page corruption in flash memory|
US10346041B2|2016-09-14|2019-07-09|Samsung Electronics Co., Ltd.|Method for using BMC as proxy NVMeoF discovery controller to provide NVM subsystems to host|
US20180101312A1|2016-10-06|2018-04-12|Netflix, Inc.|Techniques for generating and operating on in-memory datasets|
US9720785B1|2016-10-14|2017-08-01|International Business Machines Corporation|Variable checkpointing in a streaming application that includes tuple windows|
US9678837B1|2016-10-14|2017-06-13|International Business Machines Corporation|Variable checkpointing in a streaming application with one or more consistent regions|
CN108153482B|2016-12-05|2021-09-07|厦门旌存半导体技术有限公司|Io命令处理方法与介质接口控制器|
US10303560B2|2017-02-14|2019-05-28|Dell Products L.P.|Systems and methods for eliminating write-hole problems on parity-based storage resources during an unexpected power loss|
JP6779821B2|2017-03-24|2020-11-04|キオクシア株式会社|メモリシステム及びデータの読み出し方法|
US20180300083A1|2017-04-12|2018-10-18|Hewlett Packard Enterprise Development Lp|Write-ahead logging through a plurality of logging buffers using nvm|
US10528295B2|2017-04-29|2020-01-07|International Business Machines Corporation|Intra-tier data migration to segregate zombie storage from dead storage|
KR102234725B1|2017-05-30|2021-04-02|에스케이하이닉스 주식회사|컨트롤러 및 메모리 시스템 및 메모리 시스템의 동작 방법|
US10635654B2|2017-06-12|2020-04-28|Samsung Electronics Co., Ltd.|Data journaling for large solid state storage devices with low DRAM/SRAM|
US10275162B2|2017-06-23|2019-04-30|Dell Products L.P.|Methods and systems for managing data migration in solid state non-volatile memory|
US10176046B1|2017-06-29|2019-01-08|EMC IP Holding Company LLC|Checkpointing of metadata into user data area of a content addressable storage system|
TWI633434B|2017-07-12|2018-08-21|宏碁股份有限公司|管理固態硬碟之方法、系統及電腦可讀取媒體|
CN107728937B|2017-09-15|2020-09-04|上海交通大学|一种使用非易失性内存介质的键值对持久存储方法及系统|
CN107784121B|2017-11-18|2020-04-24|中国人民解放军国防科技大学|一种基于非易失内存的日志文件系统的小写优化方法|
US20190214087A1|2018-01-09|2019-07-11|Western Digital Technologies, Inc.|Non-volatile storage system with decoupling of write transfers from write operations|
TWI662409B|2018-01-23|2019-06-11|祥碩科技股份有限公司|實體區域頁面位址轉換器與實體區域頁面清單存取方法|
US10691354B1|2018-01-31|2020-06-23|EMC IP Holding Company LLC|Method and system of disk access pattern selection for content based storage RAID system|
US10585791B2|2018-03-20|2020-03-10|Intel Corporation|Ordering of memory device mapping to reduce contention|
US10636495B2|2018-06-12|2020-04-28|Western Digital Technologies, Inc.|Adjustable read retry order based on decoding success trend|
US10922178B2|2018-10-31|2021-02-16|Hewlett Packard Enterprise Development Lp|Masterless raid for byte-addressable non-volatile memory|
CN111143230A|2018-11-02|2020-05-12|群联电子股份有限公司|数据整并方法、存储器存储装置及存储器控制电路单元|
TWI709042B|2018-11-08|2020-11-01|慧榮科技股份有限公司|用來進行關於容錯式磁碟陣列的映射資訊管理之方法與裝置以及儲存系統|
US10845991B2|2018-12-03|2020-11-24|EMC IP Holding Company LLC|Shallow memory table for data storage service|
US11163693B2|2019-07-30|2021-11-02|EMC IP Holding Company LLC|Hash-based one-level mapping for storage clusters|
TWI743562B|2019-09-11|2021-10-21|英業達股份有限公司|資料記錄系統的操作方法|
KR20210041159A|2019-10-04|2021-04-15|삼성전자주식회사|정정 가능한 독출 오류가 발생한 데이터를 복구하는 메모리 시스템 및 호스트의 동작 방법|
KR20210044086A|2019-10-14|2021-04-22|에스케이하이닉스 주식회사|컨트롤러 및 이를 포함하는 데이터 저장 시스템|
TWI733568B|2020-08-27|2021-07-11|慧榮科技股份有限公司|記憶裝置、快閃記憶體控制器及其存取方法|
CN113255262B|2021-06-07|2021-09-28|上海国微思尔芯技术股份有限公司|对象分配方法、装置、计算机设备和存储介质|
法律状态:
2017-10-11| MM4A| Annulment or lapse of patent due to non-payment of fees|
优先权:
申请号 | 申请日 | 专利标题
US201161543707P| true| 2011-10-05|2011-10-05||
[返回顶部]